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 2007/01/30 17:05:45 UTC

svn commit: r501432 - /directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java

Author: elecharny
Date: Tue Jan 30 08:05:44 2007
New Revision: 501432

URL: http://svn.apache.org/viewvc?view=rev&rev=501432
Log:
Fixed a problem when searchingfor infos in subschemaSubentry

Modified:
    directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java

Modified: directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java?view=diff&rev=501432&r1=501431&r2=501432
==============================================================================
--- directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java (original)
+++ directory/apacheds/trunk/core-unit/src/test/java/org/apache/directory/server/core/schema/SchemaServiceITest.java Tue Jan 30 08:05:44 2007
@@ -77,6 +77,7 @@
         controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
         Map<String, Attributes> persons = new HashMap<String, Attributes>();
         NamingEnumeration results = sysRoot.search( "", "(objectClass=person)", controls );
+        
         while ( results.hasMore() )
         {
             SearchResult result = ( SearchResult ) results.next();
@@ -121,6 +122,7 @@
         controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
         Map<String, Attributes> orgPersons = new HashMap<String, Attributes>();
         NamingEnumeration results = sysRoot.search( "", "(objectClass=organizationalPerson)", controls );
+        
         while ( results.hasMore() )
         {
             SearchResult result = ( SearchResult ) results.next();
@@ -158,6 +160,7 @@
         controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
         Map<String, Attributes> inetOrgPersons = new HashMap<String, Attributes>();
         NamingEnumeration results = sysRoot.search( "", "(objectClass=inetOrgPerson)", controls );
+        
         while ( results.hasMore() )
         {
             SearchResult result = ( SearchResult ) results.next();
@@ -178,5 +181,279 @@
         assertTrue( ocs.contains( "person" ) );
         assertTrue( ocs.contains( "organizationalPerson" ) );
         assertTrue( ocs.contains( "inetOrgPerson" ) );
+    }
+    
+    public void testSearchForSubSchemaSubEntryUserAttrsOnly() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=*)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have only one entry in the result
+        assertEquals( 1, subSchemaEntry.size() );
+        
+        // It should be the normalized form of cn=schema,ou=system
+        Attributes attrs = subSchemaEntry.get( "2.5.4.3=schema,2.5.4.11=system" );
+        
+        assertNotNull( attrs );
+        
+        // We should have 2 attributes in the result :
+        // - attributeTypes
+        // - cn
+        // - objectClass
+        assertEquals( 2, attrs.size() );
+        
+        assertNotNull( attrs.get( "cn" ) );
+        assertNotNull( attrs.get( "objectClass" ) );
+    }
+
+    public void testSearchForSubSchemaSubEntryAllAttrs() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=*)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have only one entry in the result
+        assertEquals( 1, subSchemaEntry.size() );
+        
+        // It should be the normalized form of cn=schema,ou=system
+        Attributes attrs = subSchemaEntry.get( "2.5.4.3=schema,2.5.4.11=system" );
+        
+        assertNotNull( attrs );
+        
+        // We should have 14 attributes in the result :
+        // - attributeTypes
+        // - cn
+        // - creatorsName
+        // - createTimestamp
+        // - dITContentRules
+        // - dITStructureRules
+        // - ldapSyntaxes
+        // - matchingRules
+        // - matchingRuleUse
+        // - modifiersName
+        // - modifyTimestamp
+        // - nameForms
+        // - objectClass
+        // - objectClasses
+        assertEquals( 14, attrs.size() );
+        
+        assertNotNull( attrs.get( "attributeTypes" ) );
+        assertNotNull( attrs.get( "cn" ) );
+        assertNotNull( attrs.get( "creatorsName" ) );
+        assertNotNull( attrs.get( "createTimestamp" ) );
+        assertNotNull( attrs.get( "dITContentRules" ) );
+        assertNotNull( attrs.get( "dITStructureRules" ) );
+        assertNotNull( attrs.get( "ldapSyntaxes" ) );
+        assertNotNull( attrs.get( "matchingRules" ) );
+        assertNotNull( attrs.get( "matchingRuleUse" ) );
+        assertNotNull( attrs.get( "modifiersName" ) );
+        assertNotNull( attrs.get( "modifyTimestamp" ) );
+        assertNotNull( attrs.get( "nameForms" ) );
+        assertNotNull( attrs.get( "objectClass" ) );
+        assertNotNull( attrs.get( "objectClasses" ) );
+    }
+
+    public void testSearchForSubSchemaSubEntrySingleAttributeSelected() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        controls.setReturningAttributes( new String[]{ "nameForms" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=*)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have only one entry in the result
+        assertEquals( 1, subSchemaEntry.size() );
+        
+        // It should be the normalized form of cn=schema,ou=system
+        Attributes attrs = subSchemaEntry.get( "2.5.4.3=schema,2.5.4.11=system" );
+        
+        assertNotNull( attrs );
+        
+        // We should have 1 attribute in the result :
+        // - nameForms
+        assertEquals( 1, attrs.size() );
+        
+        assertNull( attrs.get( "attributeTypes" ) );
+        assertNull( attrs.get( "cn" ) );
+        assertNull( attrs.get( "creatorsName" ) );
+        assertNull( attrs.get( "createTimestamp" ) );
+        assertNull( attrs.get( "dITContentRules" ) );
+        assertNull( attrs.get( "dITStructureRules" ) );
+        assertNull( attrs.get( "ldapSyntaxes" ) );
+        assertNull( attrs.get( "matchingRules" ) );
+        assertNull( attrs.get( "matchingRuleUse" ) );
+        assertNull( attrs.get( "modifiersName" ) );
+        assertNull( attrs.get( "modifyTimestamp" ) );
+        assertNotNull( attrs.get( "nameForms" ) );
+        assertNull( attrs.get( "objectClass" ) );
+        assertNull( attrs.get( "objectClasses" ) );
+    }
+
+    public void testSearchForSubSchemaSubEntryBadFilter() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=nothing)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have no entry in the result
+        assertEquals( 0, subSchemaEntry.size() );
+    }
+
+    public void testSearchForSubSchemaSubEntryFilterEqualTop() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=top)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have only one entry in the result
+        assertEquals( 1, subSchemaEntry.size() );
+        
+        // It should be the normalized form of cn=schema,ou=system
+        Attributes attrs = subSchemaEntry.get( "2.5.4.3=schema,2.5.4.11=system" );
+        
+        assertNotNull( attrs );
+        
+        // We should have 14 attribute in the result :
+        // - nameForms
+        assertEquals( 14, attrs.size() );
+        
+        assertNotNull( attrs.get( "attributeTypes" ) );
+        assertNotNull( attrs.get( "cn" ) );
+        assertNotNull( attrs.get( "creatorsName" ) );
+        assertNotNull( attrs.get( "createTimestamp" ) );
+        assertNotNull( attrs.get( "dITContentRules" ) );
+        assertNotNull( attrs.get( "dITStructureRules" ) );
+        assertNotNull( attrs.get( "ldapSyntaxes" ) );
+        assertNotNull( attrs.get( "matchingRules" ) );
+        assertNotNull( attrs.get( "matchingRuleUse" ) );
+        assertNotNull( attrs.get( "modifiersName" ) );
+        assertNotNull( attrs.get( "modifyTimestamp" ) );
+        assertNotNull( attrs.get( "nameForms" ) );
+        assertNotNull( attrs.get( "objectClass" ) );
+        assertNotNull( attrs.get( "objectClasses" ) );
+    }
+
+    public void testSearchForSubSchemaSubEntryFilterEqualSubSchema() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=subSchema)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have only one entry in the result
+        assertEquals( 1, subSchemaEntry.size() );
+        
+        // It should be the normalized form of cn=schema,ou=system
+        Attributes attrs = subSchemaEntry.get( "2.5.4.3=schema,2.5.4.11=system" );
+        
+        assertNotNull( attrs );
+        
+        // We should have 14 attribute in the result :
+        // - nameForms
+        assertEquals( 14, attrs.size() );
+        
+        assertNotNull( attrs.get( "attributeTypes" ) );
+        assertNotNull( attrs.get( "cn" ) );
+        assertNotNull( attrs.get( "creatorsName" ) );
+        assertNotNull( attrs.get( "createTimestamp" ) );
+        assertNotNull( attrs.get( "dITContentRules" ) );
+        assertNotNull( attrs.get( "dITStructureRules" ) );
+        assertNotNull( attrs.get( "ldapSyntaxes" ) );
+        assertNotNull( attrs.get( "matchingRules" ) );
+        assertNotNull( attrs.get( "matchingRuleUse" ) );
+        assertNotNull( attrs.get( "modifiersName" ) );
+        assertNotNull( attrs.get( "modifyTimestamp" ) );
+        assertNotNull( attrs.get( "nameForms" ) );
+        assertNotNull( attrs.get( "objectClass" ) );
+        assertNotNull( attrs.get( "objectClasses" ) );
+    }
+
+    public void testSearchForSubSchemaSubEntryNotObjectScope() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(objectClass=nothing)", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have no entry in the result
+        assertEquals( 0, subSchemaEntry.size() );
+    }
+
+    public void testSearchForSubSchemaSubEntryComposedFilters() throws NamingException
+    {
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.ONELEVEL_SCOPE );
+        controls.setReturningAttributes( new String[]{ "+" } );
+        
+        Map<String, Attributes> subSchemaEntry = new HashMap<String, Attributes>();
+        NamingEnumeration results = sysRoot.search( "cn=schema", "(&(objectClass=*)(objectClass=top))", controls );
+
+        while ( results.hasMore() )
+        {
+            SearchResult result = ( SearchResult ) results.next();
+            subSchemaEntry.put( result.getName(), result.getAttributes() );
+        }
+
+        // We should have no entry in the result
+        assertEquals( 0, subSchemaEntry.size() );
     }
 }