@Test public void testGroupLoad() { LdapGroup group = (LdapGroup) HELPER.getGroup(HELPER.getAdminGroupIdentifiyer()); group.debug(); LOG.log(Level.INFO, "\nmembers: {0}\n", group.get(HELPER.getGroupMemberAttribut())); assertFalse(group.isNew()); assertFalse(group.isEmpty()); }
/** * Since member of groups can't be null, "cn=none" if the group has no real members. * * @param group * @return */ public static boolean hasMembers(final LdapGroup group) { if (group.getMembers() == null || group.getMembers().size() == 0) { return false; } if (group.getMembers().size() > 1) { return true; } return group.getMembers().iterator().next().startsWith(NONE_UNIQUE_MEMBER_ID) == false; }
@Test public void testUpdateGroup() throws Exception { LdapGroup g1 = Utils.createTestGroup(CN); assertNull(g1.get("description")); g1.set("description", "Group " + CN); HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup(CN); assertEquals(g1.get("description"), "Group " + CN); Utils.removeTestGroup(g1); }
@Test public void testAddUserToGroup() throws Exception { LdapGroup g1 = Utils.createTestGroup(CN); g1.addUser(testUser1); if (HELPER.setGroup(g1)) { LOG.log(Level.INFO, "updated Group {0}", CN); } g1 = (LdapGroup) HELPER.getGroup(CN); g1.debug(); Utils.removeTestGroup(g1); }
@Test public void testDeleteGroup() throws Exception { LdapGroup g1 = Utils.createTestGroup(CN); try { if (HELPER.rmGroup(g1)) { LOG.log(Level.INFO, "deleted Group {0}", CN); } } catch (Exception ex) { LOG.log(Level.SEVERE, "setGroup fails", ex); } g1 = (LdapGroup) HELPER.getGroup(CN); assertTrue(g1.isEmpty()); }
@Test public void testAddUsersToGroup() throws Exception { testUser2 = HELPER.getUserTemplate("U_" + System.currentTimeMillis()); testUser2.set("cn", testUser2.getUid()); HELPER.setUser(testUser2); LdapGroup g1 = Utils.createTestGroup(CN); g1.addUser(testUser1); g1.addUser(testUser2); HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup(CN); LOG.log(Level.INFO, "user count Group {0} is {1}", new Object[] {CN, g1.getUsers().size()}); assertTrue(g1.getUsers().size() > 2); Utils.removeTestGroup(g1); }
@Test public void testRemoveUserFromGroup() throws Exception { LdapGroup g1 = Utils.createTestGroup(CN); String[] usernames = {"U1_" + System.currentTimeMillis(), "U2_" + System.currentTimeMillis()}; if (HELPER.setGroup(g1)) { LOG.log(Level.INFO, "updated Group {0}", CN); } List<LdapUser> users = Utils.createTestUsers(usernames); for (LdapUser user : users) { g1.addUser(user); } HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup(CN); int count = g1.getUsers().size(); LOG.log(Level.INFO, "user count Group {0} is {1}", new Object[] {CN, count}); g1.debug(); assertTrue(count > 1); g1.rmUser(users.get(0)); HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup(CN); LOG.log(Level.INFO, "user count Group {0} is {1}", new Object[] {CN, g1.getUsers().size()}); g1.debug(); assertTrue(g1.getUsers().size() == (count - 1)); Utils.removeTestGroup(g1); Utils.removeTestUsers(users); }
/** * Used for bind and update. * * @param person * @return * @see org.projectforge.ldap.LdapDao#getModificationItems(org.projectforge.ldap.LdapObject) */ @Override protected List<ModificationItem> getModificationItems( final List<ModificationItem> list, final LdapGroup group) { createAndAddModificationItems(list, "businessCategory", group.getBusinessCategory()); createAndAddModificationItems(list, "o", group.getOrganization()); createAndAddModificationItems(list, "description", group.getDescription()); if (CollectionUtils.isNotEmpty(group.getMembers()) == true) { createAndAddModificationItems(list, "uniqueMember", group.getMembers()); } else { createAndAddModificationItems(list, "uniqueMember", NONE_UNIQUE_MEMBER_ID); } final boolean modifyPosixAccount = isPosixAccountsConfigured() == true && GroupDOConverter.isPosixAccountValuesEmpty(group) == false; if (modifyPosixAccount == true) { if (group.getObjectClasses() != null) { final List<String> missedObjectClasses = LdapUtils.getMissedObjectClasses( getAdditionalObjectClasses(group), getObjectClass(), group.getObjectClasses()); if (CollectionUtils.isNotEmpty(missedObjectClasses) == true) { for (final String missedObjectClass : missedObjectClasses) { list.add( createModificationItem(DirContext.ADD_ATTRIBUTE, "objectClass", missedObjectClass)); } } } } if (modifyPosixAccount == true) { createAndAddModificationItems(list, "gidNumber", String.valueOf(group.getGidNumber())); } return list; }
@Test public void testUpdateExistingGroup() throws Exception { LdapGroup g1 = (LdapGroup) HELPER.getGroup("users"); LOG.log(Level.INFO, "Group users description: {0}", g1.get("description")); String description = g1.get("description"); g1.set("description", description + CN); HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup("users"); assertEquals(g1.get("description"), description + CN); g1.set("description", description); HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup("users"); assertEquals(g1.get("description"), description); }
@Test public void testUpdateEmptyGroup() throws Exception { LdapGroup g1 = Utils.createTestGroup(CN); int count = g1.getUsers().size(); LOG.log(Level.INFO, "user count Group {0} is {1}", new Object[] {CN, count}); g1.debug(); List<LdapUser> users = new ArrayList<LdapUser>(); for (LdapUser user : g1.getUsers()) { users.add(user); } for (LdapUser user : users) { g1.rmUser(user); } HELPER.setGroup(g1); g1 = (LdapGroup) HELPER.getGroup(CN); count = g1.getUsers().size(); LOG.log(Level.INFO, "user count Group {0} is {1}", new Object[] {CN, count}); g1.debug(); assertTrue(g1.getUsers().size() == 1); Utils.removeTestGroup(g1); }
/** * @see org.projectforge.ldap.LdapDao#mapToObject(java.lang.String, * javax.naming.directory.Attributes) */ @Override protected LdapGroup mapToObject(final String dn, final Attributes attributes) throws NamingException { final LdapGroup group = new LdapGroup(); group.setBusinessCategory(LdapUtils.getAttributeStringValue(attributes, "businessCategory")); group.setDescription(LdapUtils.getAttributeStringValue(attributes, "description")); group.setOrganization(LdapUtils.getAttributeStringValue(attributes, "o")); final String[] members = LdapUtils.getAttributeStringValues(attributes, "uniqueMember"); if (members != null) { for (final String member : members) { group.addMember(member, ldapConfig.getBaseDN()); } } final boolean posixAccountsConfigured = isPosixAccountsConfigured(); if (posixAccountsConfigured == true) { final String no = LdapUtils.getAttributeStringValue(attributes, "gidNumber"); group.setGidNumber(NumberHelper.parseInteger(no)); } return group; }
/** @see org.projectforge.ldap.LdapDao#getId(org.projectforge.ldap.LdapObject) */ @Override public String getId(final LdapGroup obj) { return obj.getBusinessCategory(); }