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 2011/01/06 05:51:13 UTC

svn commit: r1055746 - /directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java

Author: elecharny
Date: Thu Jan  6 04:51:12 2011
New Revision: 1055746

URL: http://svn.apache.org/viewvc?rev=1055746&view=rev
Log:
added a complex test

Modified:
    directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java

Modified: directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java?rev=1055746&r1=1055745&r2=1055746&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java (original)
+++ directory/apacheds/branches/apacheds-AP/core-integ/src/test/java/org/apache/directory/server/core/subtree/SubentrySearchOperationIT.java Thu Jan  6 04:51:12 2011
@@ -24,10 +24,12 @@ import static org.junit.Assert.assertFal
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.directory.server.core.annotations.ApplyLdifs;
 import org.apache.directory.server.core.annotations.CreateDS;
 import org.apache.directory.server.core.integ.FrameworkRunner;
-import org.apache.directory.shared.ldap.codec.search.controls.subentries.SubentriesControl;
 import org.apache.directory.shared.ldap.cursor.SearchCursor;
 import org.apache.directory.shared.ldap.entry.Entry;
 import org.apache.directory.shared.ldap.filter.SearchScope;
@@ -35,9 +37,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.AddResponse;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
 import org.apache.directory.shared.ldap.message.SearchRequest;
-import org.apache.directory.shared.ldap.message.SearchRequestImpl;
 import org.apache.directory.shared.ldap.message.SearchResultEntry;
-import org.apache.directory.shared.ldap.name.DN;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -223,14 +223,7 @@ public class SubentrySearchOperationIT e
         createAAP( "ou=AAP, ou=system" );
         createCaSubentry( "cn=test, ou=AAP, ou=system", "{}" );
         
-        SearchRequest searchRequest = new SearchRequestImpl();
-        searchRequest.setBase( new DN( "ou=system" ) );
-        searchRequest.setFilter( "(ObjectClass=*)" );
-        searchRequest.setScope( SearchScope.SUBTREE );
-        searchRequest.addAttributes( "+" );
-        SubentriesControl control = new SubentriesControl();
-        control.setVisibility( true );
-        searchRequest.addControl( control );
+        SearchRequest searchRequest = createSRWithControl( "ou=system", "(ObjectClass=*)", SearchScope.SUBTREE, "*", "+" );
         SearchCursor results = adminConnection.search( searchRequest );
         
         assertNotNull( results );
@@ -285,6 +278,8 @@ public class SubentrySearchOperationIT e
     @Test
     public void testSearchEntries() throws Exception
     {
+        long baseApSN = service.getApSeqNumber();
+        
         // First, create the APs
         createCaSAP( "ou=SAP, ou=system" );
         createCaIAP( "ou=IAP,ou=SAP, ou=system" );
@@ -309,6 +304,7 @@ public class SubentrySearchOperationIT e
             "ou=e3,ou=IAP,ou=SAP,ou=system", 
             "ObjectClass: top",
             "ObjectClass: organizationalUnit", 
+            "ObjectClass: extensibleObject",
             "ou: e3" ) );
         
         createEntryAdmin( LdifUtils.createEntry( 
@@ -338,8 +334,8 @@ public class SubentrySearchOperationIT e
         // ObjectClasses.
         createCaSubentry( "cn=SESAP, ou=SAP, ou=system", "{ specificationFilter or: { item:person, item:extensibleObject } }" );
         
-        // The CA subentry associated with the IAP select all entries having the 'organizationalUnit' ObjectClass 
-        createCaSubentry( "cn=SEIAP, ou=IAP, ou=SAP, ou=system", "{ specificationFilter item:organizationalUnit }" );
+        // The CA subentry associated with the AAP select all entries having the 'organizationalUnit' ObjectClass 
+        createCaSubentry( "cn=SEIAP, ou=IAP, ou=SAP, ou=system", "{ specificationFilter item:person }" );
 
         // The AC/CA subentry associated with the AAP manage 2 roles, and select of the underlying entries
         Entry subentry = LdifUtils.createEntry( 
@@ -367,10 +363,84 @@ public class SubentrySearchOperationIT e
             + "    } " 
             + "  } "
             + "}" );
-
+        
         AddResponse response = adminConnection.add( subentry );
         assertEquals( ResultCodeEnum.SUCCESS, response.getLdapResult().getResultCode() );
+
+        // Get the subentries UUID
+        String seCaSapUUID = getEntryUuid( "cn=SESAP, ou=SAP, ou=system" );
+        String seCaIapUUID = getEntryUuid( "cn=SEIAP, ou=IAP, ou=SAP, ou=system" );
+        String seCaAapUUID = getEntryUuid( "cn=SEAA,ou=AAP,ou=system" );
+        String seAcAapUUID = getEntryUuid( "cn=SEAA,ou=AAP,ou=system" );
+        
+        Map<String, ExpectedAttribute[]> expectedResults = new HashMap<String, ExpectedAttribute[]>();
+
+        ExpectedAttribute[] expectedResultSap = new ExpectedAttribute[]
+            { 
+                new ExpectedAttribute( true, "CollectiveAttributeSeqNumber", Long.toString( baseApSN + 1 ) ),
+                new ExpectedAttribute( true, "administrativeRole", "CollectiveAttributeSpecificArea" ),
+            };
+        
+        ExpectedAttribute[] expectedResultAap = new ExpectedAttribute[]
+            { 
+                new ExpectedAttribute( true, "CollectiveAttributeSeqNumber", Long.toString( baseApSN + 3 ) ),
+                new ExpectedAttribute( false, "CollectiveAttributeSubentriesUUID" ),
+                new ExpectedAttribute( true, "TriggerExecutionSeqNumber", "-1" ),
+                new ExpectedAttribute( false, "TriggerExecutionSubentriesUUID" ),
+                new ExpectedAttribute( true, "AccessControlSeqNumber", Long.toString( baseApSN + 3 ) ),
+                new ExpectedAttribute( false, "AccessControlSubentriesUUID" ),
+                new ExpectedAttribute( true, "SubSchemaSeqNumber", "-1" ),
+                new ExpectedAttribute( false, "SubSchemaSubentriesUUID" ),
+                new ExpectedAttribute( true, "administrativeRole", "autonomousArea", "accessControlSpecificArea", "collectiveAttributeSpecificArea",
+                    "triggerExecutionSpecificArea", "subSchemaSpecificArea" ),
+            };
         
+        ExpectedAttribute[] expectedResultIap = new ExpectedAttribute[]
+            { 
+                new ExpectedAttribute( true, "CollectiveAttributeSeqNumber", Long.toString( baseApSN + 2 ) ),
+                new ExpectedAttribute( true, "administrativeRole", "collectiveAttributeSpecificArea" )
+            };
+        
+        ExpectedAttribute[] expectedResultE1 = new ExpectedAttribute[]
+            { 
+                new ExpectedAttribute( true, "CollectiveAttributeSeqNumber", Long.toString( baseApSN + 1 ) ),
+                new ExpectedAttribute( true, "CollectiveAttributeSubentriesUUID", seCaSapUUID ),
+            };
+
+        ExpectedAttribute[] expectedResultE5 = new ExpectedAttribute[]
+            { 
+                new ExpectedAttribute( false, "CollectiveAttributeSeqNumber" ),
+                new ExpectedAttribute( false, "CollectiveAttributeSubentriesUUID" ),
+                new ExpectedAttribute( false, "TriggerExecutionSeqNumber" ),
+                new ExpectedAttribute( false, "TriggerExecutionSubentriesUUID" ),
+                new ExpectedAttribute( false, "AccessControlSeqNumber" ),
+                new ExpectedAttribute( false, "AccessControlSubentriesUUID" ),
+                new ExpectedAttribute( false, "SubSchemaSeqNumber" ),
+                new ExpectedAttribute( false, "SubSchemaSubentriesUUID" ),
+            };
+        
+        // The APs
+        expectedResults.put( "ou=SAP,ou=system", expectedResultSap );
+        expectedResults.put( "ou=AAP,ou=system", expectedResultAap );
+        expectedResults.put( "ou=IAP,ou=system", expectedResultIap );
+        
+        // The entries
+        expectedResults.put( "ou=e1,ou=SAP,ou=system", expectedResultE1 );
+        //expectedResults.put( "cn=e2,ou=e1,ou=SAP,ou=system", expectedResultE2 );
+        //expectedResults.put( "ou=e3,ou=IAP,ou=SAP,ou=system", expectedResultE3 );
+        //expectedResults.put( "cn=e4,ou=AAP,ou=system", expectedResultE4 );
+        expectedResults.put( "cn=e5,ou=system", expectedResultE5 );
+        //expectedResults.put( "cn=e6,ou=e3,ou=IAP,ou=SAP,ou=system", expectedResultE6 );
+
+        // Dump the subentries
+        SearchRequest searchRequest = createSRWithControl( "ou=system", "(ObjectClass=*)", SearchScope.SUBTREE, "*", "+" );
+        SearchCursor subentries = adminConnection.search( searchRequest );
+        
+        while ( subentries.next() )
+        {
+            System.out.println( ( ( SearchResultEntry ) subentries.get() ).getEntry() );
+        }
+
         // Now, let's read all the entries.
         SearchCursor results = adminConnection.search( "ou=system", "(ObjectClass=*)", SearchScope.SUBTREE, "*", "+" );
         
@@ -381,6 +451,8 @@ public class SubentrySearchOperationIT e
         {
             Entry entry = ( ( SearchResultEntry ) results.get() ).getEntry();
 
+            //checkEntry( entry, expectedResults );
+
             System.out.println( entry );
             nbEntry++;
         }