@Test public void testGenerateForgetPasswordToken() throws Exception { final String emptyToken = ""; final String token = "sewfasaa12121casf13143dc"; final String email = "svd@163.com"; final String operatingIp = "ip"; final Date currentTime = new Date(); UserService userService = mockUserService(); UserService userService2 = mock(UserService.class); CommandGateway gateway = mock(CommandGateway.class); ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); when(gateway.sendAndWait(eq(command), eq(5L), eq(TimeUnit.SECONDS))).thenReturn(emptyToken, token); ForgetPasswordEmailSender emailSender = mock(ForgetPasswordEmailSender.class); doNothing().when(emailSender).sendEmail(eq(token)); UserServiceFacadeImpl service = new UserServiceFacadeImpl(); service.setUserService(userService); service.setCommandGateway(gateway); service.setEmailSender(emailSender); boolean generated = service.generateForgetPasswordToken(email, operatingIp, currentTime); assertThat(generated, is(false)); service.setUserService(userService2); generated = service.generateForgetPasswordToken(email, operatingIp, currentTime); assertThat(generated, is(false)); generated = service.generateForgetPasswordToken(email, operatingIp, currentTime); assertThat(generated, is(true)); verify(userService).getCurrentUser(); verify(userService2, times(2)).getCurrentUser(); verify(gateway, times(2)).sendAndWait(eq(command), eq(5L), eq(TimeUnit.SECONDS)); verify(emailSender).sendEmail(eq(token)); }
public boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime) { UserAccount userAccount = currentUser(); if (userAccount != null) { logger.warn("user already logged on"); return false; } ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); String token = commandGateway.sendAndWait(command, 5, TimeUnit.SECONDS); if (!Strings.hasLength(token)) { return false; } emailSender.sendEmail(token); return true; }
UserServiceFacadeImpl implements UserServiceFacade { public boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime) { UserAccount userAccount = currentUser(); if (userAccount != null) { logger.warn("user already logged on"); return false; } ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); String token = commandGateway.sendAndWait(command, 5, TimeUnit.SECONDS); if (!Strings.hasLength(token)) { return false; } emailSender.sendEmail(token); return true; } }
UserServiceFacadeImpl implements UserServiceFacade { public boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime) { UserAccount userAccount = currentUser(); if (userAccount != null) { logger.warn("user already logged on"); return false; } ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); String token = commandGateway.sendAndWait(command, 5, TimeUnit.SECONDS); if (!Strings.hasLength(token)) { return false; } emailSender.sendEmail(token); return true; }  }
UserServiceFacadeImpl implements UserServiceFacade { public boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime) { UserAccount userAccount = currentUser(); if (userAccount != null) { logger.warn("user already logged on"); return false; } ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); String token = commandGateway.sendAndWait(command, 5, TimeUnit.SECONDS); if (!Strings.hasLength(token)) { return false; } emailSender.sendEmail(token); return true; }  @Override UserAccount currentUser(); @Override UserEntry currentDetailUser(); @Override boolean isWithdrawPasswordSet(); @Override boolean isWithdrawPasswordMatched(String withdrawPassword); @Override boolean canAuthWithNewPassword(String username, String newPassword); @Override UserPasswordReset getToken(String token); PortfolioEntry obtainPortfolioForUser(); @Override boolean matchPreviousPassword(String previousPassword); @Override void editDetails(String username, String email, String cellPhoneNumber, String firstName, String lastName); @Override void editAdminDetails(String username,
                                 String email,
                                 Identifier identifier,
                                 String cellPhoneNumber,
                                 String firstName,
                                 String lastName,
                                 List<String> roles); @Override void updateNotificationSettings(boolean logonAlert, boolean withdrawMoneyAlert, boolean withdrawItemAlert, boolean executedAlert); @Override void changePassword(String previousPassword,
                               String newPassword,
                               String confirmedNewPassword,
                               String operatingIp,
                               Date changedTime); @Override boolean createWithdrawPassword(String withdrawPassword, String confirmedWithdrawPassword, String operatingIp, Date changedTime); @Override boolean matchPreviousWithdrawPassword(String previousPassword); boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime); @Override UserAccount resetPasswordWithToken(String token,
                                              String password,
                                              String confirmedPassword,
                                              String operatingIp,
                                              Date resetTime); @Override void changeWithdrawPassword(String previousPassword,
                                       String withdrawPassword,
                                       String confirmedWithdrawPassword,
                                       String operatingIp,
                                       Date changedTime); @Override UserEntry findByEmail(String email); @Override int findPasswordResetCount(String email, String ip, Date currentDate); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPasswordEncoder(PasswordEncoder passwordEncoder); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setCommandGateway(CommandGateway commandGateway); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserService(UserService userService); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserRepository(UserQueryRepository userRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPortfolioQueryRepository(PortfolioQueryRepository portfolioQueryRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserPasswordResetRepository(UserPasswordResetRepository userPasswordResetRepository); @Autowired void setEmailSender(ForgetPasswordEmailSender emailSender); }
UserServiceFacadeImpl implements UserServiceFacade { public boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime) { UserAccount userAccount = currentUser(); if (userAccount != null) { logger.warn("user already logged on"); return false; } ForgetPasswordCommand command = new ForgetPasswordCommand(email, operatingIp, currentTime); String token = commandGateway.sendAndWait(command, 5, TimeUnit.SECONDS); if (!Strings.hasLength(token)) { return false; } emailSender.sendEmail(token); return true; }  @Override UserAccount currentUser(); @Override UserEntry currentDetailUser(); @Override boolean isWithdrawPasswordSet(); @Override boolean isWithdrawPasswordMatched(String withdrawPassword); @Override boolean canAuthWithNewPassword(String username, String newPassword); @Override UserPasswordReset getToken(String token); PortfolioEntry obtainPortfolioForUser(); @Override boolean matchPreviousPassword(String previousPassword); @Override void editDetails(String username, String email, String cellPhoneNumber, String firstName, String lastName); @Override void editAdminDetails(String username,
                                 String email,
                                 Identifier identifier,
                                 String cellPhoneNumber,
                                 String firstName,
                                 String lastName,
                                 List<String> roles); @Override void updateNotificationSettings(boolean logonAlert, boolean withdrawMoneyAlert, boolean withdrawItemAlert, boolean executedAlert); @Override void changePassword(String previousPassword,
                               String newPassword,
                               String confirmedNewPassword,
                               String operatingIp,
                               Date changedTime); @Override boolean createWithdrawPassword(String withdrawPassword, String confirmedWithdrawPassword, String operatingIp, Date changedTime); @Override boolean matchPreviousWithdrawPassword(String previousPassword); boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime); @Override UserAccount resetPasswordWithToken(String token,
                                              String password,
                                              String confirmedPassword,
                                              String operatingIp,
                                              Date resetTime); @Override void changeWithdrawPassword(String previousPassword,
                                       String withdrawPassword,
                                       String confirmedWithdrawPassword,
                                       String operatingIp,
                                       Date changedTime); @Override UserEntry findByEmail(String email); @Override int findPasswordResetCount(String email, String ip, Date currentDate); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPasswordEncoder(PasswordEncoder passwordEncoder); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setCommandGateway(CommandGateway commandGateway); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserService(UserService userService); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserRepository(UserQueryRepository userRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPortfolioQueryRepository(PortfolioQueryRepository portfolioQueryRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserPasswordResetRepository(UserPasswordResetRepository userPasswordResetRepository); @Autowired void setEmailSender(ForgetPasswordEmailSender emailSender);  }