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/11/20 21:53:59 UTC

svn commit: r596823 - /directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java

Author: elecharny
Date: Tue Nov 20 12:53:59 2007
New Revision: 596823

URL: http://svn.apache.org/viewvc?rev=596823&view=rev
Log:
Added some more tests to complete all the cases for a modification applied to an entry.

Modified:
    directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java

Modified: directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java?rev=596823&r1=596822&r2=596823&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java (original)
+++ directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/util/AttributeUtilsTest.java Tue Nov 20 12:53:59 2007
@@ -285,4 +285,131 @@
             assertEquals( "apache", values.nextElement() );
         }
     }
+    
+    /**
+     * test the addition by modification of an attribute in an empty entry.
+     * 
+     * As we are replacing a non existing attribute, it should be added.
+     *
+     * @throws NamingException
+     */
+    @Test
+    public void testApplyModifyModificationFromEmptyEntry() throws NamingException
+    {
+        Attributes entry = new AttributesImpl();
+        Attribute attr = new AttributeImpl( "cn", "test" );
+        ModificationItem modification = new ModificationItemImpl(DirContext.REPLACE_ATTRIBUTE, attr );
+        AttributeUtils.applyModification( entry, modification );
+        assertNotNull( entry.get( "cn" ) );
+        assertEquals( 1, entry.size() );
+    }
+
+    
+    /**
+     * Test the replacement by modification of an attribute in an empty entry.
+     * 
+     * As we are replacing a non existing attribute, it should not change the entry.
+     *
+     * @throws NamingException
+     */
+    @Test
+    public void testApplyModifyEmptyModificationFromEmptyEntry() throws NamingException
+    {
+        Attributes entry = new AttributesImpl();
+        Attribute attr = new AttributeImpl( "cn" );
+        ModificationItem modification = new ModificationItemImpl(DirContext.REPLACE_ATTRIBUTE, attr );
+        AttributeUtils.applyModification( entry, modification );
+        assertNull( entry.get( "cn" ) );
+        assertEquals( 0, entry.size() );
+    }
+
+
+    /**
+     * Test the replacement by modification of an attribute in an empty entry.
+     * 
+     * As we are replacing a non existing attribute, it should not change the entry.
+     *
+     * @throws NamingException
+     */
+    @Test
+    public void testApplyModifyAttributeModification() throws NamingException
+    {
+        Attributes entry = new AttributesImpl();
+        Attribute cn = new AttributeImpl( "cn", "test" );
+        
+        entry.put( cn );
+
+        Attribute ou = new AttributeImpl( "ou" );
+        ou.add( "apache" );
+        ou.add( "acme corp" );
+        
+        entry.put( ou );
+        
+        Attribute newOu = new AttributeImpl( "ou" );
+        newOu.add( "Big Company" );
+        newOu.add( "directory" );
+        
+        ModificationItem modification = new ModificationItemImpl(DirContext.REPLACE_ATTRIBUTE, newOu );
+        
+        AttributeUtils.applyModification( entry, modification );
+        
+        assertEquals( 2, entry.size() );
+        
+        assertNotNull( entry.get( "cn" ) );
+        assertNotNull( entry.get( "ou" ) );
+        
+        Attribute modifiedAttr = entry.get( "ou" );
+        
+        NamingEnumeration<?> values = modifiedAttr.getAll();
+        
+        assertTrue( values.hasMoreElements() );
+        
+        Set<String> expectedValues = new HashSet<String>();
+        expectedValues.add( "Big Company" );
+        expectedValues.add( "directory" );
+        
+        while ( values.hasMoreElements() )
+        {
+            String value = (String)values.nextElement();
+            
+            assertTrue( expectedValues.contains( value ) );
+            
+            expectedValues.remove( value );
+        }
+        
+        assertEquals( 0, expectedValues.size() );
+    }
+
+
+    /**
+     * Test the removing by modification of an existing attribute in an .
+     * 
+     * @throws NamingException
+     */
+    @Test
+    public void testApplyModifyModificationRemoveAttribute() throws NamingException
+    {
+        Attributes entry = new AttributesImpl();
+        Attribute cn = new AttributeImpl( "cn", "test" );
+        
+        entry.put( cn );
+
+        Attribute ou = new AttributeImpl( "ou" );
+        ou.add( "apache" );
+        ou.add( "acme corp" );
+        
+        entry.put( ou );
+        
+        Attribute newOu = new AttributeImpl( "ou" );
+        
+        ModificationItem modification = new ModificationItemImpl(DirContext.REPLACE_ATTRIBUTE, newOu );
+        
+        AttributeUtils.applyModification( entry, modification );
+        
+        assertEquals( 1, entry.size() );
+        
+        assertNotNull( entry.get( "cn" ) );
+        assertNull( entry.get( "ou" ) );
+    }
 }
+