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/10/04 14:20:20 UTC

svn commit: r581875 - /directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java

Author: elecharny
Date: Thu Oct  4 05:20:20 2007
New Revision: 581875

URL: http://svn.apache.org/viewvc?rev=581875&view=rev
Log:
Added Stefan's tests for DIRSERVER-1080

Modified:
    directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java

Modified: directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java?rev=581875&r1=581874&r2=581875&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java (original)
+++ directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/operational/OperationalAttributeServiceITest.java Thu Oct  4 05:20:20 2007
@@ -39,6 +39,7 @@
 import org.apache.directory.shared.ldap.message.AttributesImpl;
 import org.apache.directory.shared.ldap.message.DerefAliasesEnum;
 import org.apache.directory.shared.ldap.message.ModificationItemImpl;
+import org.junit.Test;
 
 
 /**
@@ -50,8 +51,6 @@
  */
 public class OperationalAttributeServiceITest extends AbstractAdminTestCase
 {
-    private static final String CREATORS_NAME = "creatorsName";
-    private static final String CREATE_TIMESTAMP = "createTimestamp";
     private static final String RDN_KATE_BUSH = "cn=Kate Bush";
 
     protected Attributes getPersonAttributes( String sn, String cn )
@@ -109,22 +108,22 @@
         assertNotNull( attribute );
         assertTrue( attribute.contains( "top" ) );
         assertTrue( attribute.contains( "organizationalUnit" ) );
-        assertNull( attributes.get( CREATE_TIMESTAMP ) );
-        assertNull( attributes.get( CREATORS_NAME ) );
+        assertNull( attributes.get( "createTimestamp" ) );
+        assertNull( attributes.get( "creatorsName" ) );
 
         SearchControls ctls = new SearchControls();
         ctls.setReturningAttributes( new String[]
             { "ou", "createTimestamp", "creatorsName" } );
 
         sysRoot.addToEnvironment( JndiPropertyConstants.JNDI_LDAP_DAP_DEREF_ALIASES, DerefAliasesEnum.NEVER_DEREF_ALIASES );
-        NamingEnumeration list;
+        NamingEnumeration<SearchResult> list;
         list = sysRoot.search( "", "(ou=testing00)", ctls );
-        SearchResult result = ( SearchResult ) list.next();
+        SearchResult result = list.next();
         list.close();
 
         assertNotNull( result.getAttributes().get( "ou" ) );
-        assertNotNull( result.getAttributes().get( CREATORS_NAME ) );
-        assertNotNull( result.getAttributes().get( CREATE_TIMESTAMP ) );
+        assertNotNull( result.getAttributes().get( "creatorsName" ) );
+        assertNotNull( result.getAttributes().get( "createTimestamp" ) );
     }
 
 
@@ -143,9 +142,9 @@
     {
         SearchControls controls = new SearchControls();
         controls.setSearchScope( SearchControls.OBJECT_SCOPE );
-        NamingEnumeration list;
+        NamingEnumeration<SearchResult> list;
         list = sysRoot.search( "", "(objectClass=*)", controls );
-        SearchResult result = ( SearchResult ) list.next();
+        SearchResult result = list.next();
 
         // test to make sure op attribute do not occur - this is the control
         Attributes attributes = result.getAttributes();
@@ -157,7 +156,7 @@
             { "creatorsName", "createTimestamp" };
         controls.setReturningAttributes( ids );
         list = sysRoot.search( "", "(objectClass=*)", controls );
-        result = ( SearchResult ) list.next();
+        result = list.next();
         attributes = result.getAttributes();
         assertNotNull( attributes.get( "creatorsName" ) );
         assertNotNull( attributes.get( "createTimestamp" ) );
@@ -182,6 +181,80 @@
 
         assertFalse( "uid=akarasulu,ou=users,ou=system".equals( attributes.get( "creatorsName" ).get() ) );
     }
+
+    
+    /**
+     * Modify an entry and check whether attributes modifiersName and modifyTimestamp are present.
+     */
+    @Test
+    public void testModifyShouldLeadToModifiersAttributes() throws NamingException
+    {
+        ModificationItem modifyOp = new ModificationItem( DirContext.ADD_ATTRIBUTE, new BasicAttribute( "description",
+            "Singer Songwriter" ) );
+
+        sysRoot.modifyAttributes( RDN_KATE_BUSH, new ModificationItem[]
+            { modifyOp } );
+
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        String[] ids = new String[]
+            { "modifiersName", "modifyTimestamp" };
+        controls.setReturningAttributes( ids );
+
+        NamingEnumeration<SearchResult> list = sysRoot.search( RDN_KATE_BUSH, "(objectClass=*)", controls );
+        SearchResult result = list.next();
+        Attributes attributes = result.getAttributes();
+        assertNotNull( attributes.get( "modifiersName" ) );
+        assertNotNull( attributes.get( "modifyTimestamp" ) );
+    }
+    
+    
+    /**
+     * Modify an entry and check whether attribute modifyTimestamp changes.
+     */
+    @Test
+    public void testModifyShouldChangeModifyTimestamp() throws NamingException, InterruptedException
+    {
+        // Add attribute description to entry
+        ModificationItem modifyAddOp = new ModificationItem( DirContext.ADD_ATTRIBUTE, new BasicAttribute(
+            "description", "an English singer, songwriter, musician" ) );
+        sysRoot.modifyAttributes( RDN_KATE_BUSH, new ModificationItem[]
+            { modifyAddOp } );
+
+        // Determine modifyTimestamp
+        SearchControls controls = new SearchControls();
+        controls.setSearchScope( SearchControls.OBJECT_SCOPE );
+        String[] ids = new String[]
+            { "modifyTimestamp" };
+        controls.setReturningAttributes( ids );
+        NamingEnumeration<SearchResult> list = sysRoot.search( RDN_KATE_BUSH, "(objectClass=*)", controls );
+        SearchResult result = list.next();
+        Attributes attributes = result.getAttributes();
+        Attribute modifyTimestamp = attributes.get( "modifyTimestamp" );
+        assertNotNull( modifyTimestamp );
+        String oldTimestamp = modifyTimestamp.get().toString();
+        
+        // Wait two seconds
+        Thread.sleep( 2000 );
+
+        // Change value of attribute description
+        ModificationItem modifyOp = new ModificationItem( DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(
+            "description", "one of England's most successful solo female performers" ) );
+        sysRoot.modifyAttributes( RDN_KATE_BUSH, new ModificationItem[]
+            { modifyOp } );
+
+        // Determine modifyTimestamp after modification
+        list = sysRoot.search( RDN_KATE_BUSH, "(objectClass=*)", controls );
+        result = list.next();
+        attributes = result.getAttributes();
+        modifyTimestamp = attributes.get( "modifyTimestamp" );
+        assertNotNull( modifyTimestamp );
+        String newTimestamp = modifyTimestamp.get().toString();
+        
+        // assert the value has changed
+        assertFalse( oldTimestamp.equals( newTimestamp ) );
+    }
+
 
     /**
      * Try to add modifiersName attribute to an entry