@Override public String toString() { return new ToStringBuilder(this).append("userId", getUserId()) .append("username", getUsername()) .append("lastName", getLastName()) .append("firstName", getFirstName()) .toString(); }
@Transactional(readOnly = true) public User getUserAndCheckDeletability(Integer userId) throws ObjectNotFoundException { User user = getUser(userId); if ((!user.getProjectAssignments().isEmpty()) && (!user.getInactiveProjectAssignments().isEmpty())) { user.setDeletable(true); } else { // bummer, we need to check if the user booked any hours on the assignments List<Integer> assignmentIds = new ArrayList<>(); assignmentIds.addAll(DomainUtil.getIdsFromDomainObjects(user.getProjectAssignments())); assignmentIds.addAll(DomainUtil.getIdsFromDomainObjects(user.getInactiveProjectAssignments())); List<AssignmentAggregateReportElement> aggregates = aggregateReportService.getHoursPerAssignment(assignmentIds); user.setDeletable(ReportUtil.isEmptyAggregateList(aggregates)); } LOGGER.info("Retrieved user " + user.getUsername() + ", deletable: " + user.isDeletable()); return user; }
@Override @Transactional public void persistNewUser(User user, String password) throws ObjectNotUniqueException { // check username uniqueness User dbUser = userDAO.findByUsername(user.getUsername()); if (dbUser != null && !dbUser.getUserId().equals(user.getUserId())) { throw new ObjectNotUniqueException("Username already in use"); } // encrypt password user.setSalt((int) (Math.random() * 10000)); user.setPassword(encryptPassword(password, user.getSalt())); userDAO.persist(user); // assign new users to default projects projectAssignmentManagementService.assignUserToDefaultProjects(user); }
@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 shouldChangeUsername() throws ObjectNotUniqueException { User user = UserObjectMother.createUser(); User persistedUser = new User(); when(userDAO.findByUsername(user.getUsername())).thenReturn(null); when(userDAO.findById(user.getUserId())).thenReturn(persistedUser); when(userDAO.persist(persistedUser)).thenReturn(persistedUser); userService.persistEditedUser(user); verify(userDAO).persist(persistedUser); } }
@Test public void shouldFindByUsername() { User user = userDao.findByUsername("thies"); assertEquals("thies", user.getUsername()); }
@Test public void shouldFindById() { User user = userDao.findById(1); assertEquals("thies", user.getUsername()); }
@Transactional public User persistEditedUser(User user) throws ObjectNotUniqueException { // check username uniqueness User dbUser = userDAO.findByUsername(user.getUsername()); if (dbUser != null && !dbUser.getUserId().equals(user.getUserId())) { throw new ObjectNotUniqueException("Username already in use"); } else if (dbUser == null) { dbUser = findUserOnId(user); } dbUser.setActive(user.isActive()); dbUser.setEmail(user.getEmail()); dbUser.setFirstName(user.getFirstName()); dbUser.setLastName(user.getLastName()); dbUser.getUserDepartments().clear(); dbUser.getUserDepartments().addAll(user.getUserDepartments()); dbUser.setUsername(user.getUsername()); boolean reAddPm = dbUser.getUserRoles().contains(UserRole.PROJECTMANAGER); dbUser.setUserRoles(user.getUserRoles()); if (reAddPm && !user.getUserRoles().contains(UserRole.PROJECTMANAGER)) { dbUser.addUserRole(UserRole.PROJECTMANAGER); } userDAO.persist(dbUser); return dbUser; }
assertEquals("thies", user.getUsername()); assertEquals(1, user.getProjectAssignments().size()); assertEquals(1, user.getInactiveProjectAssignments().size());
@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()); }