You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2022/08/25 04:32:24 UTC
[directory-server] branch master updated: Fixed the BadSubentryServiceIT test class (JNDI -> LDAP API) for DIRSERVER-1481
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-server.git
The following commit(s) were added to refs/heads/master by this push:
new 66cade8873 Fixed the BadSubentryServiceIT test class (JNDI -> LDAP API) for DIRSERVER-1481
66cade8873 is described below
commit 66cade8873e2b54f1f907abc65a7a69a761f0405
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Thu Aug 25 06:32:11 2022 +0200
Fixed the BadSubentryServiceIT test class (JNDI -> LDAP API) for
DIRSERVER-1481
---
.../server/core/subtree/BadSubentryServiceIT.java | 250 +++++++++------------
1 file changed, 105 insertions(+), 145 deletions(-)
diff --git a/core-integ/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceIT.java b/core-integ/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceIT.java
index 84edb37651..b308fc53ed 100644
--- a/core-integ/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceIT.java
+++ b/core-integ/src/test/java/org/apache/directory/server/core/subtree/BadSubentryServiceIT.java
@@ -21,7 +21,6 @@
package org.apache.directory.server.core.subtree;
-import static org.apache.directory.server.core.integ.IntegrationUtils.getSystemContext;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -29,21 +28,19 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.HashMap;
import java.util.Map;
-import javax.naming.NamingEnumeration;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.ModificationItem;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.LdapContext;
-
import org.apache.directory.api.ldap.model.constants.SchemaConstants;
+import org.apache.directory.api.ldap.model.cursor.EntryCursor;
+import org.apache.directory.api.ldap.model.entry.Attribute;
+import org.apache.directory.api.ldap.model.entry.DefaultEntry;
+import org.apache.directory.api.ldap.model.entry.DefaultModification;
+import org.apache.directory.api.ldap.model.entry.Entry;
+import org.apache.directory.api.ldap.model.entry.ModificationOperation;
+import org.apache.directory.api.ldap.model.message.SearchScope;
+import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.server.core.annotations.CreateDS;
import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
import org.apache.directory.server.core.integ.ApacheDSTestExtension;
+import org.apache.directory.server.core.integ.IntegrationUtils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -57,147 +54,110 @@ import org.junit.jupiter.api.extension.ExtendWith;
@CreateDS(name = "BadSubentryServiceIT-class")
public class BadSubentryServiceIT extends AbstractLdapTestUnit
{
-
- public Attributes getTestEntry( String cn )
+ public Map<String, Entry> getAllEntries() throws Exception
{
- Attributes entry = new BasicAttributes( true );
- Attribute objectClass = new BasicAttribute( "objectClass" );
- objectClass.add( "top" );
- objectClass.add( "person" );
- entry.put( objectClass );
- entry.put( "cn", cn );
- entry.put( "sn", cn );
- return entry;
- }
-
-
- public Attributes getCollectiveAttributeTestSubentry( String cn )
- {
- Attributes subentry = new BasicAttributes( true );
- Attribute objectClass = new BasicAttribute( "objectClass" );
- objectClass.add( "top" );
- objectClass.add( SchemaConstants.SUBENTRY_OC );
- objectClass.add( "collectiveAttributeSubentry" );
- subentry.put( objectClass );
- subentry.put( "subtreeSpecification", "{ }" );
- subentry.put( "c-o", "Test Org" );
- subentry.put( "cn", cn );
- return subentry;
- }
-
-
- public Attributes getAccessControlTestSubentry( String cn )
- {
- Attributes subentry = new BasicAttributes( true );
- Attribute objectClass = new BasicAttribute( "objectClass" );
- objectClass.add( "top" );
- objectClass.add( SchemaConstants.SUBENTRY_OC );
- objectClass.add( "accessControlSubentry" );
- subentry.put( objectClass );
- subentry.put( "subtreeSpecification", "{ }" );
- subentry.put( "prescriptiveACI",
- "{ " +
- "identificationTag \"alllUsersFullAccessACI\", " +
- "precedence 14, " +
- "authenticationLevel none, " +
- "itemOrUserFirst userFirst: " +
- "{ " +
- "userClasses " +
- "{ " +
- "allUsers " +
- "}, " +
- "userPermissions " +
- "{ " +
- "{ " +
- "protectedItems " +
- "{ " +
- "entry, allUserAttributeTypesAndValues " +
- "}, " +
- "grantsAndDenials " +
- "{ " +
- "grantAdd, grantDiscloseOnError, grantRead, " +
- "grantRemove, grantBrowse, grantExport, grantImport, " +
- "grantModify, grantRename, grantReturnDN, " +
- "grantCompare, grantFilterMatch, grantInvoke " +
- "} " +
- "} " +
- "} " +
- "} " +
- "} "
- );
- subentry.put( "cn", cn );
- return subentry;
- }
-
-
- public void addAdministrativeRoles() throws Exception
- {
- LdapContext sysRoot = getSystemContext( getService() );
- Attribute attribute = new BasicAttribute( "administrativeRole" );
- attribute.add( "collectiveAttributeSpecificArea" );
- attribute.add( "accessControlSpecificArea" );
- ModificationItem item = new ModificationItem( DirContext.ADD_ATTRIBUTE, attribute );
- sysRoot.modifyAttributes( "", new ModificationItem[]
- { item } );
- }
-
-
- public Map<String, Attributes> getAllEntries() throws Exception
- {
- LdapContext sysRoot = getSystemContext( getService() );
- Map<String, Attributes> resultMap = new HashMap<String, Attributes>();
- SearchControls controls = new SearchControls();
- controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
- controls.setReturningAttributes( new String[]
- { "+", "*" } );
- NamingEnumeration<SearchResult> results = sysRoot.search( "", "(objectClass=*)", controls );
-
- while ( results.hasMore() )
+ try ( LdapConnection connection = IntegrationUtils.getAdminConnection( getService() ) )
{
- SearchResult result = results.next();
- resultMap.put( result.getName(), result.getAttributes() );
+ Map<String, Entry> resultMap = new HashMap<>();
+
+ try ( EntryCursor cursor = connection.search( "", "(ObjectClass=*)", SearchScope.SUBTREE, "*", "+" ) )
+ {
+ while ( cursor.next() )
+ {
+ Entry entry = cursor.get();
+ resultMap.put( entry.getDn().getName(), entry );
+ }
+ }
+
+ return resultMap;
}
-
- return resultMap;
}
@Test
public void testTrackingOfSubentryOperationals() throws Exception
{
- LdapContext sysRoot = getSystemContext( getService() );
- addAdministrativeRoles();
- sysRoot.createSubcontext( "cn=collectiveAttributeTestSubentry",
- getCollectiveAttributeTestSubentry( "collectiveAttributeTestSubentry" ) );
- sysRoot.createSubcontext( "cn=accessControlTestSubentry",
- getAccessControlTestSubentry( "accessControlTestSubentry" ) );
- sysRoot.createSubcontext( "cn=testEntry", getTestEntry( "testEntry" ) );
-
- Map<String, Attributes> results = getAllEntries();
- Attributes testEntry = results.get( "cn=testEntry,ou=system" );
-
- //----------------------------------------------------------------------
-
- Attribute collectiveAttributeSubentries = testEntry.get( "collectiveAttributeSubentries" );
-
- assertTrue( collectiveAttributeSubentries.contains( "cn=collectiveAttributeTestSubentry,ou=system" ) );
-
- assertFalse( collectiveAttributeSubentries.contains( "cn=accessControlTestSubentry,ou=system" ),
- "'collectiveAttributeSubentries' operational attribute SHOULD NOT " +
- "contain references to non-'collectiveAttributeSubentry's like 'accessControlSubentry's" );
-
- assertEquals( 1, collectiveAttributeSubentries.size() );
-
- //----------------------------------------------------------------------
-
- Attribute accessControlSubentries = testEntry.get( "accessControlSubentries" );
-
- assertTrue( accessControlSubentries.contains( "cn=accessControlTestSubentry,ou=system" ) );
-
- assertFalse( accessControlSubentries.contains( "cn=collectiveAttributeTestSubentry,ou=system" ),
- "'accessControlSubentries' operational attribute SHOULD NOT " +
- "contain references to non-'accessControlSubentry's like 'collectiveAttributeSubentry's" );
-
- assertEquals( 1, accessControlSubentries.size() );
+ try ( LdapConnection conn = IntegrationUtils.getAdminConnection( getService() ) )
+ {
+ conn.modify( "ou=system", new DefaultModification(
+ ModificationOperation.ADD_ATTRIBUTE, "administrativeRole", "collectiveAttributeSpecificArea", "accessControlSpecificArea" ) );
+
+ conn.add( new DefaultEntry( "cn=collectiveAttributeTestSubentry,ou=system",
+ "objectClass", "top",
+ "objectClass", SchemaConstants.SUBENTRY_OC,
+ "objectClass", "collectiveAttributeSubentry",
+ "subtreeSpecification", "{ }",
+ "c-o", "Test Org",
+ "cn", "collectiveAttributeTestSubentry" ) );
+
+ conn.add( new DefaultEntry( "cn=accessControlTestSubentry,ou=system",
+ "objectClass", "top",
+ "objectClass", SchemaConstants.SUBENTRY_OC,
+ "objectClass", "accessControlSubentry" ,
+ "subtreeSpecification", "{ }",
+ "prescriptiveACI",
+ "{ " +
+ " identificationTag \"alllUsersFullAccessACI\", " +
+ " precedence 14, " +
+ " authenticationLevel none, " +
+ " itemOrUserFirst userFirst: " +
+ " { " +
+ " userClasses " +
+ " { " +
+ " allUsers " +
+ " }, " +
+ " userPermissions " +
+ " { " +
+ " { " +
+ " protectedItems " +
+ " { " +
+ " entry, allUserAttributeTypesAndValues " +
+ " }, " +
+ " grantsAndDenials " +
+ " { " +
+ " grantAdd, grantDiscloseOnError, grantRead, " +
+ " grantRemove, grantBrowse, grantExport, grantImport, " +
+ " grantModify, grantRename, grantReturnDN, " +
+ " grantCompare, grantFilterMatch, grantInvoke " +
+ " } " +
+ " } " +
+ " } " +
+ " } " +
+ "} ",
+ "cn", "accessControlTestSubentry" ) );
+
+ conn.add( new DefaultEntry( "cn=testEntry,ou=system",
+ "objectClass", "top",
+ "objectClass", "person",
+ "cn", "testEntry",
+ "sn", "testEntry" ) );
+
+ Map<String, Entry> results = getAllEntries();
+ Entry testEntry = results.get( "cn=testEntry,ou=system" );
+
+ //----------------------------------------------------------------------
+
+ Attribute collectiveAttributeSubentries = testEntry.get( "collectiveAttributeSubentries" );
+
+ assertTrue( collectiveAttributeSubentries.contains( "cn=collectiveAttributeTestSubentry,ou=system" ) );
+
+ assertFalse( collectiveAttributeSubentries.contains( "cn=accessControlTestSubentry,ou=system" ),
+ "'collectiveAttributeSubentries' operational attribute SHOULD NOT " +
+ "contain references to non-'collectiveAttributeSubentry's like 'accessControlSubentry's" );
+
+ assertEquals( 1, collectiveAttributeSubentries.size() );
+
+ //----------------------------------------------------------------------
+
+ Attribute accessControlSubentries = testEntry.get( "accessControlSubentries" );
+
+ assertTrue( accessControlSubentries.contains( "cn=accessControlTestSubentry,ou=system" ) );
+
+ assertFalse( accessControlSubentries.contains( "cn=collectiveAttributeTestSubentry,ou=system" ),
+ "'accessControlSubentries' operational attribute SHOULD NOT " +
+ "contain references to non-'accessControlSubentry's like 'collectiveAttributeSubentry's" );
+
+ assertEquals( 1, accessControlSubentries.size() );
+ }
}
}