@Override @Transactional public void changePassword(String username, String currentPassword, String newUnencryptedPassword) throws BadCredentialsException { User user = userDAO.findByUsername(username); Validate.notNull(user, String.format("Can't find user with username %s", username)); String encryptedCurrentPassword = encryptPassword(currentPassword, user.getSalt()); if (!user.getPassword().equals(encryptedCurrentPassword)) { throw new BadCredentialsException("Invalid current password"); } changePassword(user, newUnencryptedPassword); }
@Test public void shouldCreateNewUser() throws ObjectNotUniqueException { User user = UserObjectMother.createUser(); when(userDAO.findByUsername(user.getUsername())).thenReturn(null); when(userDAO.persist(user)).thenReturn(user); when(assignmentService.assignUserToDefaultProjects(user)).thenReturn(user); userService.persistNewUser(user, "password"); verify(assignmentService).assignUserToDefaultProjects(user); assertNotSame("password", user.getPassword()); }
@Test public void shouldUpdatePassword() throws ObjectNotUniqueException { User user = new User(1); user.setPassword("aa"); user.setUsername("user"); when(userDAO.findByUsername("user")).thenReturn(user); when(userDAO.persist(any(User.class))).thenReturn(user); userService.changePassword("user", "pwd"); assertFalse(user.getPassword().equals("pwd")); }
@Test public void testAddAndcheckProjectManagementRoles() { User user = new User(1); user.setPassword("aa"); user.setSalt(2); user.setUsername("user"); when(userDAO.findById(1)) .thenReturn(user); when(userDAO.persist(user)) .thenReturn(user); userDAO.deletePmWithoutProject(); userService.validateProjectManagementRoles(1); assertEquals("aa", user.getPassword()); }
@Test public void shouldParseUserAndStoreNewKeyInCacheMap() throws XMLStreamException, InstantiationException, IllegalAccessException, ImportException { UserDepartment department = UserDepartmentObjectMother.createUserDepartment(); EntityParser parser = createParser("<USERLIST>\n <USERS>\n <USER_ID>1</USER_ID>\n <USERNAME>admin</USERNAME>\n <PASSWORD>1d798ca9dba7df61bf399a02695f9f50034bad66</PASSWORD>\n <FIRST_NAME>eHour</FIRST_NAME>\n <LAST_NAME>Admin</LAST_NAME>\n <EMAIL>t@t.net</EMAIL>\n <ACTIVE>Y</ACTIVE>\n </USERS>\n <USERS>\n <USER_ID>3</USER_ID>\n <USERNAME>thies</USERNAME>\n <PASSWORD>e2e90187007d55ae40678e11e0c9581cb7bb9928</PASSWORD>\n <FIRST_NAME>Thies</FIRST_NAME>\n <LAST_NAME>Edeling</LAST_NAME>\n <EMAIL>thies@te-con.nl</EMAIL>\n <ACTIVE>Y</ACTIVE>\n <SALT>6367</SALT>\n </USERS>\n </USERLIST>\n", department, 1); keyCache.putKey(UserDepartment.class, 1, 1); List<User> result = parser.parse(User.class, new JoinTables(), status); assertEquals(2, result.size()); User user = result.get(0); assertEquals("admin", user.getUsername()); assertEquals("1d798ca9dba7df61bf399a02695f9f50034bad66", user.getPassword()); assertEquals("eHour", user.getFirstName()); assertEquals("Admin", user.getLastName()); assertEquals("t@t.net", user.getEmail()); assertTrue(user.isActive()); PrimaryKeyCache keyCache = parser.getKeyCache(); assertFalse(keyCache.isEmpty()); Map<Serializable, Serializable> map = keyCache.keyMap.get(User.class); assertEquals(2, map.entrySet().size()); }