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/11/14 23:14:08 UTC

svn commit: r1201932 - in /directory/apacheds/trunk: ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/ xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/

Author: elecharny
Date: Mon Nov 14 22:14:08 2011
New Revision: 1201932

URL: http://svn.apache.org/viewvc?rev=1201932&view=rev
Log:
Forgt to commit a test for getRootDse

Added:
    directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/GetRootDseTest.java
Modified:
    directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java

Added: directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/GetRootDseTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/GetRootDseTest.java?rev=1201932&view=auto
==============================================================================
--- directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/GetRootDseTest.java (added)
+++ directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/GetRootDseTest.java Mon Nov 14 22:14:08 2011
@@ -0,0 +1,257 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.shared.client.api.operations;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.directory.ldap.client.api.LdapNetworkConnection;
+import org.apache.directory.server.annotations.CreateLdapServer;
+import org.apache.directory.server.annotations.CreateTransport;
+import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
+import org.apache.directory.server.core.integ.FrameworkRunner;
+import org.apache.directory.shared.client.api.LdapApiIntegrationUtils;
+import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+/**
+ * A class to test the GetRootDse operation with a returningAttributes parameter
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+@RunWith(FrameworkRunner.class)
+@CreateLdapServer(transports =
+    { @CreateTransport(protocol = "LDAP"), @CreateTransport(protocol = "LDAPS") })
+public class GetRootDseTest extends AbstractLdapTestUnit
+{
+    private LdapNetworkConnection connection;
+
+
+    @Before
+    public void setup() throws Exception
+    {
+        connection = LdapApiIntegrationUtils.getPooledAdminConnection( getLdapServer() );
+    }
+
+
+    @After
+    public void shutdown() throws Exception
+    {
+        LdapApiIntegrationUtils.releasePooledAdminConnection( connection, getLdapServer() );
+    }
+
+
+    /**
+     * Test a                     if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS )
+lookup requesting all the attributes (* and +)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRootDse() throws Exception
+    {
+        Entry rootDse = connection.getRootDse();
+        
+        assertNotNull( rootDse );
+
+        assertEquals( 1, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+    }
+
+
+    /**
+     * Test a                     if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS )
+lookup requesting all the user attributes (*)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseAllUserAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "*" );
+
+        assertNotNull( rootDse );
+
+        assertEquals( 1, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+    }
+
+
+    /**
+     * Test a lookup requesting all the operational attributes (+)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseAllOperationalAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "+" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 10, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "entryUUID" ) );
+        assertTrue( rootDse.containsAttribute( "namingContexts" ) );
+        assertTrue( rootDse.containsAttribute( "subschemaSubentry" ) );
+        assertTrue( rootDse.containsAttribute( "supportedControl" ) );
+        assertTrue( rootDse.containsAttribute( "supportedExtension" ) );
+        assertTrue( rootDse.containsAttribute( "supportedFeatures" ) );
+        assertTrue( rootDse.containsAttribute( "supportedLDAPVersion" ) );
+        assertTrue( rootDse.containsAttribute( "supportedSASLMechanisms" ) );
+        assertTrue( rootDse.containsAttribute( "vendorName" ) );
+        assertTrue( rootDse.containsAttribute( "vendorVersion" ) );
+    }
+
+
+    /**
+     * Test a lookup requesting a few attributes (Objectclass, vendorName and vendorVersion)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseSelectedAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "objectClass", "vendorName", "vendorVersion" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 3, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+        assertTrue( rootDse.containsAttribute( "vendorName" ) );
+        assertTrue( rootDse.containsAttribute( "vendorVersion" ) );
+    }
+
+
+    /**
+     * Test a lookup requesting a few operational attributes (vendorName and vendorVersion)
+     * and all user attrinutes (*)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseSomeOpAttributesAllUserAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "*", "vendorName", "vendorVersion" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 3, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+        assertTrue( rootDse.containsAttribute( "vendorName" ) );
+        assertTrue( rootDse.containsAttribute( "vendorVersion" ) );
+    }
+
+
+    /**
+     * Test a lookup requesting a few user attributes (objectClass)
+     * and all operational attributes (+)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseSomeUserAttributesAllOpAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "+", "Objectclass" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 11, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+        assertTrue( rootDse.containsAttribute( "entryUUID" ) );
+        assertTrue( rootDse.containsAttribute( "namingContexts" ) );
+        assertTrue( rootDse.containsAttribute( "subschemaSubentry" ) );
+        assertTrue( rootDse.containsAttribute( "supportedControl" ) );
+        assertTrue( rootDse.containsAttribute( "supportedExtension" ) );
+        assertTrue( rootDse.containsAttribute( "supportedFeatures" ) );
+        assertTrue( rootDse.containsAttribute( "supportedLDAPVersion" ) );
+        assertTrue( rootDse.containsAttribute( "supportedSASLMechanisms" ) );
+        assertTrue( rootDse.containsAttribute( "vendorName" ) );
+        assertTrue( rootDse.containsAttribute( "vendorVersion" ) );
+    }
+
+
+    /**
+     * Test a                     if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS )
+lookup requesting a all user attributes (*)
+     * and all operational attributes (+)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseAllUserAttributesAllOpAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "+", "*" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 11, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+        assertTrue( rootDse.containsAttribute( "entryUUID" ) );
+        assertTrue( rootDse.containsAttribute( "namingContexts" ) );
+        assertTrue( rootDse.containsAttribute( "subschemaSubentry" ) );
+        assertTrue( rootDse.containsAttribute( "supportedControl" ) );
+        assertTrue( rootDse.containsAttribute( "supportedExtension" ) );
+        assertTrue( rootDse.containsAttribute( "supportedFeatures" ) );
+        assertTrue( rootDse.containsAttribute( "supportedLDAPVersion" ) );
+        assertTrue( rootDse.containsAttribute( "supportedSASLMechanisms" ) );
+        assertTrue( rootDse.containsAttribute( "vendorName" ) );
+        assertTrue( rootDse.containsAttribute( "vendorVersion" ) );
+    }
+
+
+    /**
+     * Test a lookup requesting no attributes (1.1)
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseNoAttribute() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "1.1" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 0, rootDse.size() );
+    }
+
+
+    /**
+     * Test a lookup requesting no attributes (1.1) with some attributes
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testGetRooDseNoAttributeSomeUserAttributes() throws Exception
+    {
+        Entry rootDse = connection.getRootDse( "1.1", "objectClass" );
+
+        assertNotNull( rootDse );
+        
+        assertEquals( 1, rootDse.size() );
+        assertTrue( rootDse.containsAttribute( "objectClass" ) );
+    }
+}

Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java?rev=1201932&r1=1201931&r2=1201932&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/AbstractBTreePartition.java Mon Nov 14 22:14:08 2011
@@ -820,8 +820,8 @@ public abstract class AbstractBTreeParti
      */
     public EntryFilteringCursor list( ListOperationContext listContext ) throws LdapException
     {
-        return new BaseEntryFilteringCursor( 
-            new EntryCursorAdaptor<ID>( this, 
+        return new BaseEntryFilteringCursor(
+            new EntryCursorAdaptor<ID>( this,
                 list( getEntryId( listContext.getDn() ) ) ), listContext );
     }
 
@@ -870,7 +870,7 @@ public abstract class AbstractBTreeParti
         }
         catch ( LdapException le )
         {
-            // TODO: SearchEngine.cursor() should only throw LdapException, then the exception handling here can be removed 
+            // TODO: SearchEngine.cursor() should only throw LdapException, then the exception handling here can be removed
             throw le;
         }
         catch ( Exception e )
@@ -897,8 +897,8 @@ public abstract class AbstractBTreeParti
 
         Entry entry = lookup( id );
 
-        // Remove all the attributes if the NO_ATTRIBUTE flag is set
-        if ( lookupContext.hasNoAttribute() )
+        // Remove all the attributes if the NO_ATTRIBUTE flag is set and there is no requested attribute
+        if ( lookupContext.hasNoAttribute() && ( ( lookupContext.getAttrsId() == null ) || lookupContext.getAttrsId().size() == 0 ) )
         {
             entry.clear();
 
@@ -918,7 +918,7 @@ public abstract class AbstractBTreeParti
                     AttributeType attributeType = attribute.getAttributeType();
                     String oid = attributeType.getOid();
 
-                    if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS ) 
+                    if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS )
                     {
                         if ( !lookupContext.getAttrsId().contains( oid ) )
                         {
@@ -936,7 +936,7 @@ public abstract class AbstractBTreeParti
                 {
                     AttributeType attributeType = attribute.getAttributeType();
 
-                    if ( attributeType.getUsage() == UsageEnum.USER_APPLICATIONS ) 
+                    if ( attributeType.getUsage() == UsageEnum.USER_APPLICATIONS )
                     {
                         entry.removeAttributes( attributeType );
                     }
@@ -950,7 +950,7 @@ public abstract class AbstractBTreeParti
                     {
                         AttributeType attributeType = attribute.getAttributeType();
 
-                        if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS ) 
+                        if ( attributeType.getUsage() != UsageEnum.USER_APPLICATIONS )
                         {
                             entry.removeAttributes( attributeType );
                         }
@@ -1481,7 +1481,7 @@ public abstract class AbstractBTreeParti
         }
         catch ( LdapException le )
         {
-            // In case we get an LdapException, just rethrow it as is to 
+            // In case we get an LdapException, just rethrow it as is to
             // avoid having it lost
             throw le;
         }
@@ -1807,7 +1807,7 @@ public abstract class AbstractBTreeParti
 
             Entry entry = lookup( id );
             
-            return entry != null; 
+            return entry != null;
         }
         catch ( LdapException e )
         {