TestCaseUtils.clearJEBackend(true, "userRoot", "dc=example,dc=com");
GroupManager groupManager = DirectoryServer.getGroupManager();
groupManager.deregisterAllGroups();
addSubtreeGroupTestEntries();
Group group1 = groupManager.getGroupInstance(
DN.decode("cn=group1,ou=moregroups,dc=example,dc=com"));
assertNotNull(group1);
Group group2 = groupManager.getGroupInstance(
DN.decode("cn=group1,ou=groups,dc=example,dc=com"));
assertNotNull(group2);
Group group3 = groupManager.getGroupInstance(
DN.decode("cn=group2,ou=groups,dc=example,dc=com"));
assertNotNull(group3);
// Get a client connection authenticated as user1 and make sure it handles
// group operations correctly.
DN userDN = DN.decode("uid=test1,ou=people,dc=example,dc=com");
InternalClientConnection conn = new InternalClientConnection(userDN);
InternalSearchOperation searchOperation =
new InternalSearchOperation(conn, conn.nextOperationID(),
conn.nextMessageID(), null, DN.nullDN(),
SearchScope.BASE_OBJECT,
DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
SearchFilter.createFilterFromString("(objectClass=*)"), null,
null);
assertTrue(conn.isMemberOf(group1, null));
assertTrue(conn.isMemberOf(group2, null));
assertTrue(conn.isMemberOf(group3, null));
String path = TestCaseUtils.createTempFile(
"dn: ou=groups,dc=example,dc=com",
"changetype: moddn",
"newRDN: ou=newgroups",
"deleteOldRDN: 1");
String[] args =
{
"-h", "127.0.0.1",
"-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
"-D", "cn=Directory Manager",
"-w", "password",
"--noPropertiesFile",
"-f", path
};
assertEquals(LDAPModify.mainModify(args, false, null, System.err), 0);
InternalClientConnection conn1 =
new InternalClientConnection(userDN);
searchOperation =
new InternalSearchOperation(conn1, conn1.nextOperationID(),
conn1.nextMessageID(), null, DN.nullDN(),
SearchScope.BASE_OBJECT,
DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
SearchFilter.createFilterFromString("(objectClass=*)"), null,
null);
group1 = groupManager.getGroupInstance(
DN.decode("cn=group1,ou=moregroups,dc=example,dc=com"));
assertNotNull(group1);
assertTrue(conn1.isMemberOf(group1, null));
group2 = groupManager.getGroupInstance(
DN.decode("cn=group1,ou=groups,dc=example,dc=com"));
assertNull(group2);
group3 = groupManager.getGroupInstance(
DN.decode("cn=group2,ou=groups,dc=example,dc=com"));
assertNull(group3);
Group newGroup2 = groupManager.getGroupInstance(
DN.decode("cn=group1,ou=newgroups,dc=example,dc=com"));
assertNotNull(newGroup2);
assertTrue(conn.isMemberOf(newGroup2, null));
Group newGroup3 = groupManager.getGroupInstance(
DN.decode("cn=group2,ou=newgroups,dc=example,dc=com"));
assertNotNull(newGroup3);
assertTrue(conn.isMemberOf(newGroup3, null));
// Cleanup.