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 2012/01/24 17:22:36 UTC
svn commit: r1235328 [5/12] - in /directory/apacheds/trunk:
server-annotations/src/main/java/org/apache/directory/server/annotations/
server-annotations/src/main/java/org/apache/directory/server/factory/
server-annotations/src/test/java/org/apache/dire...
Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyAddIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyAddIT.java?rev=1235328&r1=1235327&r2=1235328&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyAddIT.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyAddIT.java Tue Jan 24 16:22:33 2012
@@ -63,619 +63,631 @@ import org.junit.runner.RunWith;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-@RunWith ( FrameworkRunner.class )
-@ApplyLdifs( {
- // Entry # 1
- "dn: cn=Tori Amos,ou=system",
- "objectClass: inetOrgPerson",
- "objectClass: organizationalPerson",
- "objectClass: person",
- "objectClass: top",
- "description: an American singer-songwriter",
- "cn: Tori Amos",
- "sn: Amos",
- // Entry # 2
- "dn: cn=Debbie Harry,ou=system",
- "objectClass: inetOrgPerson",
- "objectClass: organizationalPerson",
- "objectClass: person",
- "objectClass: top",
- "cn: Debbie Harry",
- "sn: Harry"
- }
-)
+@RunWith(FrameworkRunner.class)
+@ApplyLdifs(
+ {
+ // Entry # 1
+ "dn: cn=Tori Amos,ou=system",
+ "objectClass: inetOrgPerson",
+ "objectClass: organizationalPerson",
+ "objectClass: person",
+ "objectClass: top",
+ "description: an American singer-songwriter",
+ "cn: Tori Amos",
+ "sn: Amos",
+ // Entry # 2
+ "dn: cn=Debbie Harry,ou=system",
+ "objectClass: inetOrgPerson",
+ "objectClass: organizationalPerson",
+ "objectClass: person",
+ "objectClass: top",
+ "cn: Debbie Harry",
+ "sn: Harry"
+})
//@CreateDS( allowAnonAccess=true, name="BindIT-class")
-@CreateLdapServer (
- transports =
+@CreateLdapServer(
+transports =
{
- @CreateTransport( protocol = "LDAP" )
- })
-public class ModifyAddIT extends AbstractLdapTestUnit
+ @CreateTransport(protocol = "LDAP")
+})
+public class ModifyAddIT extends AbstractLdapTestUnit
{
- private static final String BASE = "ou=system";
- private static final String RDN_TORI_AMOS = "cn=Tori Amos";
- private static final String PERSON_DESCRIPTION = "an American singer-songwriter";
- private static final String RDN_DEBBIE_HARRY = "cn=Debbie Harry";
+private static final String BASE = "ou=system";
+private static final String RDN_TORI_AMOS = "cn=Tori Amos";
+private static final String PERSON_DESCRIPTION = "an American singer-songwriter";
+private static final String RDN_DEBBIE_HARRY = "cn=Debbie Harry";
- /**
- * Creation of required attributes of a person entry.
- */
- protected Attributes getPersonAttributes( String sn, String cn ) throws LdapException
- {
- Attributes attributes = LdifUtils.createJndiAttributes(
- "objectClass: top",
- "objectClass: person",
- "objectClass: organizationalperson",
- "objectClass: inetorgperson",
- "cn", cn,
- "sn", sn );
+/**
+ * Creation of required attributes of a person entry.
+ */
+protected Attributes getPersonAttributes( String sn, String cn ) throws LdapException
+{
+ Attributes attributes = LdifUtils.createJndiAttributes(
+ "objectClass: top",
+ "objectClass: person",
+ "objectClass: organizationalperson",
+ "objectClass: inetorgperson",
+ "cn", cn,
+ "sn", sn );
- return attributes;
- }
+ return attributes;
+}
- /**
- * Add a new attribute to a person entry.
- */
- @Test
- public void testAddNewAttributeValue() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+/**
+ * Add a new attribute to a person entry.
+ */
+@Test
+public void testAddNewAttributeValue() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Add telephoneNumber attribute
- String newValue = "1234567890";
- Attributes attrs = new BasicAttributes( "telephoneNumber", newValue, true );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ // Add telephoneNumber attribute
+ String newValue = "1234567890";
+ Attributes attrs = new BasicAttributes( "telephoneNumber", newValue, true );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that
+ // - case of attribute description is correct
+ // - attribute value is added
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "telephoneNumber" );
+ assertNotNull( attr );
+ assertEquals( "telephoneNumber", attr.getID() );
+ assertTrue( attr.contains( newValue ) );
+ assertEquals( 1, attr.size() );
+}
- // Verify, that
- // - case of attribute description is correct
- // - attribute value is added
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- Attribute attr = attrs.get( "telephoneNumber" );
- assertNotNull( attr );
- assertEquals( "telephoneNumber", attr.getID() );
- assertTrue( attr.contains( newValue ) );
- assertEquals( 1, attr.size() );
- }
+/**
+ * Add a new attribute with two values.
+ */
+@Test
+public void testAddNewAttributeValues() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+
+ // Add telephoneNumber attribute
+ String[] newValues =
+ { "1234567890", "999999999" };
+ Attribute attr = new BasicAttribute( "telephoneNumber" );
+ attr.add( newValues[0] );
+ attr.add( newValues[1] );
+ Attributes attrs = new BasicAttributes( true );
+ attrs.put( attr );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that
+ // - case of attribute description is correct
+ // - attribute values are present
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ attr = attrs.get( "telephoneNumber" );
+ assertNotNull( attr );
+ assertEquals( "telephoneNumber", attr.getID() );
+ assertTrue( attr.contains( newValues[0] ) );
+ assertTrue( attr.contains( newValues[1] ) );
+ assertEquals( newValues.length, attr.size() );
+}
- /**
- * Add a new attribute with two values.
- */
- @Test
- public void testAddNewAttributeValues() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Add telephoneNumber attribute
- String[] newValues =
- { "1234567890", "999999999" };
- Attribute attr = new BasicAttribute( "telephoneNumber" );
- attr.add( newValues[0] );
- attr.add( newValues[1] );
- Attributes attrs = new BasicAttributes( true );
- attrs.put( attr );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- // Verify, that
- // - case of attribute description is correct
- // - attribute values are present
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- attr = attrs.get( "telephoneNumber" );
- assertNotNull( attr );
- assertEquals( "telephoneNumber", attr.getID() );
- assertTrue( attr.contains( newValues[0] ) );
- assertTrue( attr.contains( newValues[1] ) );
- assertEquals( newValues.length, attr.size() );
- }
+/**
+ * Add an additional value.
+ */
+@Test
+public void testAddAdditionalAttributeValue() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ // A new description attribute value
+ String newValue = "A new description for this person";
+ assertFalse( newValue.equals( PERSON_DESCRIPTION ) );
+ Attributes attrs = new BasicAttributes( "description", newValue, true );
+
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that attribute value is added
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "description" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( newValue ) );
+ assertTrue( attr.contains( PERSON_DESCRIPTION ) );
+ assertEquals( 2, attr.size() );
+}
- /**
- * Add an additional value.
- */
- @Test
- public void testAddAdditionalAttributeValue() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // A new description attribute value
- String newValue = "A new description for this person";
- assertFalse( newValue.equals( PERSON_DESCRIPTION ) );
- Attributes attrs = new BasicAttributes( "description", newValue, true );
+/**
+ * Try to add an already existing attribute value.
+ *
+ * Expected behaviour: Modify operation fails with an
+ * AttributeInUseException. Original LDAP Error code: 20 (Indicates that the
+ * attribute value specified in a modify or add operation already exists as
+ * a value for that attribute).
+ */
+@Test
+public void testAddExistingAttributeValue() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ // Change description attribute
+ Attributes attrs = new BasicAttributes( "description", PERSON_DESCRIPTION, true );
- // Verify, that attribute value is added
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- Attribute attr = attrs.get( "description" );
- assertNotNull( attr );
- assertTrue( attr.contains( newValue ) );
- assertTrue( attr.contains( PERSON_DESCRIPTION ) );
- assertEquals( 2, attr.size() );
+ try
+ {
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ fail( "Adding an already existing atribute value should fail." );
+ }
+ catch ( AttributeInUseException e )
+ {
+ // expected behaviour
}
+ // Verify, that attribute is still there, and is the only one
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "description" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( PERSON_DESCRIPTION ) );
+ assertEquals( 1, attr.size() );
+}
- /**
- * Try to add an already existing attribute value.
- *
- * Expected behaviour: Modify operation fails with an
- * AttributeInUseException. Original LDAP Error code: 20 (Indicates that the
- * attribute value specified in a modify or add operation already exists as
- * a value for that attribute).
- */
- @Test
- public void testAddExistingAttributeValue() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Change description attribute
- Attributes attrs = new BasicAttributes( "description", PERSON_DESCRIPTION, true );
+/**
+ * Try to add an already existing attribute value.
+ *
+ * Expected behaviour: Modify operation fails with an
+ * AttributeInUseException. Original LDAP Error code: 20 (Indicates that the
+ * attribute value specified in a modify or add operation already exists as
+ * a value for that attribute).
+ *
+ * Check for bug DIR_SERVER664
+ */
+@Test
+public void testAddExistingNthAttributesDirServer664() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- try
- {
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- fail( "Adding an already existing atribute value should fail." );
- }
- catch ( AttributeInUseException e )
- {
- // expected behaviour
- }
+ // Change description attribute
+ Attributes attrs = new BasicAttributes( true );
+ attrs.put( new BasicAttribute( "telephoneNumber", "1" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "2" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "3" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "4" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "5" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "6" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "7" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "8" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "9" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "10" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "11" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "12" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "13" ) );
+ attrs.put( new BasicAttribute( "telephoneNumber", "14" ) );
- // Verify, that attribute is still there, and is the only one
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- Attribute attr = attrs.get( "description" );
- assertNotNull( attr );
- assertTrue( attr.contains( PERSON_DESCRIPTION ) );
- assertEquals( 1, attr.size() );
- }
+ Attribute attr = new BasicAttribute( "description", PERSON_DESCRIPTION );
+ attrs.put( attr );
- /**
- * Try to add an already existing attribute value.
- *
- * Expected behaviour: Modify operation fails with an
- * AttributeInUseException. Original LDAP Error code: 20 (Indicates that the
- * attribute value specified in a modify or add operation already exists as
- * a value for that attribute).
- *
- * Check for bug DIR_SERVER664
- */
- @Test
- public void testAddExistingNthAttributesDirServer664() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Change description attribute
- Attributes attrs = new BasicAttributes( true );
- attrs.put( new BasicAttribute( "telephoneNumber", "1" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "2" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "3" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "4" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "5" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "6" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "7" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "8" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "9" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "10" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "11" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "12" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "13" ) );
- attrs.put( new BasicAttribute( "telephoneNumber", "14" ) );
+ try
+ {
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ fail( "Adding an already existing atribute value should fail." );
+ }
+ catch ( AttributeInUseException e )
+ {
+ // expected behaviour
+ }
- Attribute attr = new BasicAttribute( "description", PERSON_DESCRIPTION );
+ // Verify, that attribute is still there, and is the only one
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ attr = attrs.get( "description" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( PERSON_DESCRIPTION ) );
+ assertEquals( 1, attr.size() );
+}
- attrs.put( attr );
- try
- {
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- fail( "Adding an already existing atribute value should fail." );
- }
- catch ( AttributeInUseException e )
- {
- // expected behaviour
- }
+/**
+ * Check for DIR_SERVER_643
+ */
+@Test
+public void testTwoDescriptionDirServer643() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Verify, that attribute is still there, and is the only one
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- attr = attrs.get( "description" );
- assertNotNull( attr );
- assertTrue( attr.contains( PERSON_DESCRIPTION ) );
- assertEquals( 1, attr.size() );
- }
+ // Change description attribute
+ Attributes attrs = new BasicAttributes( true );
+ Attribute attr = new BasicAttribute( "description",
+ "a British singer-songwriter with an expressive four-octave voice" );
+ attr.add( "one of the most influential female artists of the twentieth century" );
+ attrs.put( attr );
+
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that attribute is still there, and is the only one
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ attr = attrs.get( "description" );
+ assertNotNull( attr );
+ assertEquals( 3, attr.size() );
+ assertTrue( attr.contains( "a British singer-songwriter with an expressive four-octave voice" ) );
+ assertTrue( attr.contains( "one of the most influential female artists of the twentieth century" ) );
+ assertTrue( attr.contains( PERSON_DESCRIPTION ) );
+}
+
+
+/**
+ * Try to add a duplicate attribute value to an entry, where this attribute
+ * is already present (objectclass in this case). Expected behaviour is that
+ * the modify operation causes an error (error code 20, "Attribute or value
+ * exists").
+ */
+@Test
+public void testAddDuplicateValueToExistingAttribute() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ // modify object classes, add a new value twice
+ Attribute ocls = new BasicAttribute( "objectClass", "organizationalPerson" );
+ ModificationItem[] modItems = new ModificationItem[2];
+ modItems[0] = new ModificationItem( DirContext.ADD_ATTRIBUTE, ocls );
+ modItems[1] = new ModificationItem( DirContext.ADD_ATTRIBUTE, ocls );
+ try
+ {
+ ctx.modifyAttributes( RDN_TORI_AMOS, modItems );
+ fail( "Adding a duplicate attribute value should cause an error." );
+ }
+ catch ( AttributeInUseException ex )
+ {
+ }
- /**
- * Check for DIR_SERVER_643
- */
- @Test
- public void testTwoDescriptionDirServer643() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Change description attribute
- Attributes attrs = new BasicAttributes( true );
- Attribute attr = new BasicAttribute( "description", "a British singer-songwriter with an expressive four-octave voice" );
- attr.add( "one of the most influential female artists of the twentieth century" );
- attrs.put( attr );
+ // Check, whether attribute objectClass is unchanged
+ Attributes attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ ocls = attrs.get( "objectClass" );
+ assertEquals( ocls.size(), 4 );
+ assertTrue( ocls.contains( "top" ) );
+ assertTrue( ocls.contains( "person" ) );
+}
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- // Verify, that attribute is still there, and is the only one
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- attr = attrs.get( "description" );
- assertNotNull( attr );
- assertEquals( 3, attr.size() );
- assertTrue( attr.contains( "a British singer-songwriter with an expressive four-octave voice" ) );
- assertTrue( attr.contains( "one of the most influential female artists of the twentieth century" ) );
- assertTrue( attr.contains( PERSON_DESCRIPTION ) );
- }
-
- /**
- * Try to add a duplicate attribute value to an entry, where this attribute
- * is already present (objectclass in this case). Expected behaviour is that
- * the modify operation causes an error (error code 20, "Attribute or value
- * exists").
- */
- @Test
- public void testAddDuplicateValueToExistingAttribute() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // modify object classes, add a new value twice
- Attribute ocls = new BasicAttribute( "objectClass", "organizationalPerson" );
- ModificationItem[] modItems = new ModificationItem[2];
- modItems[0] = new ModificationItem( DirContext.ADD_ATTRIBUTE, ocls );
- modItems[1] = new ModificationItem( DirContext.ADD_ATTRIBUTE, ocls );
- try
- {
- ctx.modifyAttributes( RDN_TORI_AMOS, modItems );
- fail( "Adding a duplicate attribute value should cause an error." );
- }
- catch ( AttributeInUseException ex )
- {
- }
+/**
+ * Try to add a duplicate attribute value to an entry, where this attribute
+ * is not present. Expected behaviour is that the modify operation causes an
+ * error (error code 20, "Attribute or value exists").
+ */
+@Test
+public void testAddDuplicateValueToNewAttribute() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Check, whether attribute objectClass is unchanged
- Attributes attrs = ctx.getAttributes( RDN_TORI_AMOS );
- ocls = attrs.get( "objectClass" );
- assertEquals( ocls.size(), 4 );
- assertTrue( ocls.contains( "top" ) );
- assertTrue( ocls.contains( "person" ) );
+ // add the same description value twice
+ Attribute desc = new BasicAttribute( "description", "another description value besides songwriter" );
+ ModificationItem[] modItems = new ModificationItem[2];
+ modItems[0] = new ModificationItem( DirContext.ADD_ATTRIBUTE, desc );
+ modItems[1] = new ModificationItem( DirContext.ADD_ATTRIBUTE, desc );
+ try
+ {
+ ctx.modifyAttributes( RDN_TORI_AMOS, modItems );
+ fail( "Adding a duplicate attribute value should cause an error." );
+ }
+ catch ( AttributeInUseException ex )
+ {
}
+ // Check, whether attribute description is still not present
+ Attributes attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ assertEquals( 1, attrs.get( "description" ).size() );
+}
- /**
- * Try to add a duplicate attribute value to an entry, where this attribute
- * is not present. Expected behaviour is that the modify operation causes an
- * error (error code 20, "Attribute or value exists").
- */
- @Test
- public void testAddDuplicateValueToNewAttribute() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // add the same description value twice
- Attribute desc = new BasicAttribute( "description", "another description value besides songwriter" );
- ModificationItem[] modItems = new ModificationItem[2];
- modItems[0] = new ModificationItem( DirContext.ADD_ATTRIBUTE, desc );
- modItems[1] = new ModificationItem( DirContext.ADD_ATTRIBUTE, desc );
- try
- {
- ctx.modifyAttributes( RDN_TORI_AMOS, modItems );
- fail( "Adding a duplicate attribute value should cause an error." );
- }
- catch ( AttributeInUseException ex )
- {
- }
- // Check, whether attribute description is still not present
- Attributes attrs = ctx.getAttributes( RDN_TORI_AMOS );
- assertEquals( 1, attrs.get( "description" ).size() );
- }
+/**
+ * Modify the entry with a bad attribute : this should fail
+ */
+@Test
+public void testSearchBadAttribute() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ // Add a not existing attribute
+ String newValue = "unbelievable";
+ Attributes attrs = new BasicAttributes( "voice", newValue, true );
- /**
- * Modify the entry with a bad attribute : this should fail
- */
- @Test
- public void testSearchBadAttribute() throws Exception
+ try
{
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ }
+ catch ( NoSuchAttributeException nsae )
+ {
+ // We have a failure : the attribute is unknown in the schema
+ assertTrue( true );
+ return;
+ }
- // Add a not existing attribute
- String newValue = "unbelievable";
- Attributes attrs = new BasicAttributes( "voice", newValue, true );
+ fail( "Cannot reach this point" );
+}
- try
- {
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- }
- catch ( NoSuchAttributeException nsae )
- {
- // We have a failure : the attribute is unknown in the schema
- assertTrue( true );
- return;
- }
-
- fail( "Cannot reach this point" );
- }
+/**
+ * Create a person entry and perform a modify op, in which
+ * we modify an attribute two times.
+ */
+@Test
+public void testAttributeValueMultiMofificationDIRSERVER_636() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- /**
- * Create a person entry and perform a modify op, in which
- * we modify an attribute two times.
- */
- @Test
- public void testAttributeValueMultiMofificationDIRSERVER_636() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Create a person entry
- Attributes attrs = getPersonAttributes("Bush", "Kate Bush");
- String rdn = "cn=Kate Bush";
- ctx.createSubcontext(rdn, attrs);
-
- // Add a description with two values
- String[] descriptions = {
- "Kate Bush is a British singer-songwriter.",
- "She has become one of the most influential female artists of the twentieth century." };
- Attribute desc1 = new BasicAttribute("description");
- desc1.add(descriptions[0]);
- desc1.add(descriptions[1]);
-
- ModificationItem addModOp = new ModificationItem(
- DirContext.ADD_ATTRIBUTE, desc1);
-
- Attribute desc2 = new BasicAttribute("description");
- desc2.add(descriptions[1]);
- ModificationItem delModOp = new ModificationItem(
- DirContext.REMOVE_ATTRIBUTE, desc2);
-
- ctx.modifyAttributes(rdn, new ModificationItem[] { addModOp,
- delModOp });
-
- SearchControls sctls = new SearchControls();
- sctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- String filter = "(cn=*Bush)";
- String base = "";
-
- // Check entry
- NamingEnumeration<SearchResult> enm = ctx.search(base, filter, sctls);
- assertTrue(enm.hasMore());
-
- while (enm.hasMore()) {
- SearchResult sr = enm.next();
- attrs = sr.getAttributes();
- Attribute desc = sr.getAttributes().get("description");
- assertEquals(1, desc.size());
- assertTrue(desc.contains(descriptions[0]));
- }
+ // Create a person entry
+ Attributes attrs = getPersonAttributes( "Bush", "Kate Bush" );
+ String rdn = "cn=Kate Bush";
+ ctx.createSubcontext( rdn, attrs );
- // Remove the person entry
- ctx.destroySubcontext(rdn);
- }
+ // Add a description with two values
+ String[] descriptions =
+ {
+ "Kate Bush is a British singer-songwriter.",
+ "She has become one of the most influential female artists of the twentieth century." };
+ Attribute desc1 = new BasicAttribute( "description" );
+ desc1.add( descriptions[0] );
+ desc1.add( descriptions[1] );
+ ModificationItem addModOp = new ModificationItem(
+ DirContext.ADD_ATTRIBUTE, desc1 );
- /**
- * Try to add subschemaSubentry attribute to an entry
- */
- @Test
- public void testModifyOperationalAttributeAdd() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ Attribute desc2 = new BasicAttribute( "description" );
+ desc2.add( descriptions[1] );
+ ModificationItem delModOp = new ModificationItem(
+ DirContext.REMOVE_ATTRIBUTE, desc2 );
- ModificationItem modifyOp = new ModificationItem( DirContext.ADD_ATTRIBUTE, new BasicAttribute(
- "subschemaSubentry", "cn=anotherSchema" ) );
+ ctx.modifyAttributes( rdn, new ModificationItem[]
+ { addModOp,
+ delModOp } );
- try
- {
- ctx.modifyAttributes( RDN_DEBBIE_HARRY, new ModificationItem[]
- { modifyOp } );
+ SearchControls sctls = new SearchControls();
+ sctls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+ String filter = "(cn=*Bush)";
+ String base = "";
- fail( "modification of entry should fail" );
- }
- catch ( InvalidAttributeValueException e )
- {
- // Expected result
- }
- catch ( NoPermissionException e )
- {
- // Expected result
- }
+ // Check entry
+ NamingEnumeration<SearchResult> enm = ctx.search( base, filter, sctls );
+ assertTrue( enm.hasMore() );
+
+ while ( enm.hasMore() )
+ {
+ SearchResult sr = enm.next();
+ attrs = sr.getAttributes();
+ Attribute desc = sr.getAttributes().get( "description" );
+ assertEquals( 1, desc.size() );
+ assertTrue( desc.contains( descriptions[0] ) );
}
+ // Remove the person entry
+ ctx.destroySubcontext( rdn );
+}
- /**
- * Create a person entry and perform a modify op on an
- * attribute which is part of the Dn. This is not allowed.
- *
- * A JIRA has been created for this bug : DIRSERVER_687
- */
- @Test
- public void testDNAttributeMemberModificationDIRSERVER_687() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Create a person entry
- Attributes attrs = getPersonAttributes("Bush", "Kate Bush");
- String rdn = "cn=Kate Bush";
- ctx.createSubcontext(rdn, attrs);
+/**
+ * Try to add subschemaSubentry attribute to an entry
+ */
+@Test
+public void testModifyOperationalAttributeAdd() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- // Try to modify the cn attribute
- Attribute desc1 = new BasicAttribute( "cn", "Georges Bush" );
+ ModificationItem modifyOp = new ModificationItem( DirContext.ADD_ATTRIBUTE, new BasicAttribute(
+ "subschemaSubentry", "cn=anotherSchema" ) );
- ModificationItem addModOp = new ModificationItem(
- DirContext.REPLACE_ATTRIBUTE, desc1);
+ try
+ {
+ ctx.modifyAttributes( RDN_DEBBIE_HARRY, new ModificationItem[]
+ { modifyOp } );
- try
- {
- ctx.modifyAttributes( rdn, new ModificationItem[] { addModOp } );
- fail();
- }
- catch ( AttributeModificationException ame )
- {
- assertTrue( true );
- // Remove the person entry
- ctx.destroySubcontext(rdn);
- }
- catch ( NamingException ne )
- {
- assertTrue( true );
- // Remove the person entry
- ctx.destroySubcontext(rdn);
- }
+ fail( "modification of entry should fail" );
+ }
+ catch ( InvalidAttributeValueException e )
+ {
+ // Expected result
+ }
+ catch ( NoPermissionException e )
+ {
+ // Expected result
}
+}
- /**
- * Try to modify an entry adding invalid number of values for a single-valued atribute
- *
- * @see <a href="http://issues.apache.org/jira/browse/DIRSERVER-614">DIRSERVER-614</a>
- */
- @Test
- public void testModifyAddWithInvalidNumberOfAttributeValues() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- Attributes attrs = new BasicAttributes( true );
- Attribute ocls = new BasicAttribute( "objectClass" );
- ocls.add( "top" );
- ocls.add( "inetOrgPerson" );
- attrs.put( ocls );
- attrs.put( "cn", "Fiona Apple" );
- attrs.put( "sn", "Apple" );
- ctx.createSubcontext( "cn=Fiona Apple", attrs );
-
- // add two displayNames to an inetOrgPerson
- attrs = new BasicAttributes( true );
- Attribute displayName = new BasicAttribute( "displayName" );
- displayName.add( "Fiona" );
- displayName.add( "Fiona A." );
- attrs.put( displayName );
+/**
+ * Create a person entry and perform a modify op on an
+ * attribute which is part of the Dn. This is not allowed.
+ *
+ * A JIRA has been created for this bug : DIRSERVER_687
+ */
+@Test
+public void testDNAttributeMemberModificationDIRSERVER_687() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- try
- {
- ctx.modifyAttributes( "cn=Fiona Apple", DirContext.ADD_ATTRIBUTE, attrs );
- fail( "modification of entry should fail" );
- }
- catch ( InvalidAttributeValueException e )
- {
+ // Create a person entry
+ Attributes attrs = getPersonAttributes( "Bush", "Kate Bush" );
+ String rdn = "cn=Kate Bush";
+ ctx.createSubcontext( rdn, attrs );
- }
- }
+ // Try to modify the cn attribute
+ Attribute desc1 = new BasicAttribute( "cn", "Georges Bush" );
+ ModificationItem addModOp = new ModificationItem(
+ DirContext.REPLACE_ATTRIBUTE, desc1 );
- /**
- * Add a new binary attribute to a person entry.
- */
- @Test
- public void testAddNewBinaryAttributeValue() throws Exception
+ try
+ {
+ ctx.modifyAttributes( rdn, new ModificationItem[]
+ { addModOp } );
+ fail();
+ }
+ catch ( AttributeModificationException ame )
+ {
+ assertTrue( true );
+ // Remove the person entry
+ ctx.destroySubcontext( rdn );
+ }
+ catch ( NamingException ne )
{
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ assertTrue( true );
+ // Remove the person entry
+ ctx.destroySubcontext( rdn );
+ }
+}
- // Add a binary attribute
- byte[] newValue = new byte[]{0x00, 0x01, 0x02, 0x03};
- Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue, true );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- // Verify, that attribute value is added
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- Attribute attr = attrs.get( "userCertificate" );
- assertNotNull( attr );
- assertTrue( attr.contains( newValue ) );
- byte[] certificate = (byte[])attr.get();
- assertTrue( Arrays.equals( newValue, certificate ) );
- assertEquals( 1, attr.size() );
- }
+/**
+ * Try to modify an entry adding invalid number of values for a single-valued atribute
+ *
+ * @see <a href="http://issues.apache.org/jira/browse/DIRSERVER-614">DIRSERVER-614</a>
+ */
+@Test
+public void testModifyAddWithInvalidNumberOfAttributeValues() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+ Attributes attrs = new BasicAttributes( true );
+ Attribute ocls = new BasicAttribute( "objectClass" );
+ ocls.add( "top" );
+ ocls.add( "inetOrgPerson" );
+ attrs.put( ocls );
+ attrs.put( "cn", "Fiona Apple" );
+ attrs.put( "sn", "Apple" );
+ ctx.createSubcontext( "cn=Fiona Apple", attrs );
- /**
- * Add a new attribute to a person entry.
- */
- @Test
- public void testAddNewBinaryAttributeValueAbove0x80() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Add a binary attribute
- byte[] newValue = new byte[]{(byte)0x80, (byte)0x81, (byte)0x82, (byte)0x83};
- Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue, true );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ // add two displayNames to an inetOrgPerson
+ attrs = new BasicAttributes( true );
+ Attribute displayName = new BasicAttribute( "displayName" );
+ displayName.add( "Fiona" );
+ displayName.add( "Fiona A." );
+ attrs.put( displayName );
- // Verify, that attribute value is added
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- Attribute attr = attrs.get( "userCertificate" );
- assertNotNull( attr );
- assertTrue( attr.contains( newValue ) );
- byte[] certificate = (byte[])attr.get();
- assertTrue( Arrays.equals( newValue, certificate ) );
- assertEquals( 1, attr.size() );
+ try
+ {
+ ctx.modifyAttributes( "cn=Fiona Apple", DirContext.ADD_ATTRIBUTE, attrs );
+ fail( "modification of entry should fail" );
}
+ catch ( InvalidAttributeValueException e )
+ {
+ }
+}
- /**
- * Add a new binary attribute to a person entry.
- */
- @Test
- public void testRetrieveEntryWithBinaryAttributeValue() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Add a ;binary attribute
- byte[] newValue = new byte[]{0x00, 0x01, 0x02, 0x03};
- Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
- // Search entry an request ;binary attribute
- SearchControls sctls = new SearchControls();
- sctls.setSearchScope(SearchControls.OBJECT_SCOPE);
- sctls.setReturningAttributes( new String[]{ "userCertificate;binary" } );
- String filter = "(objectClass=*)";
- String base = RDN_TORI_AMOS;
-
- // Test that ;binary attribute is present
- NamingEnumeration<SearchResult> enm = ctx.search( base, filter, sctls);
- assertTrue(enm.hasMore());
+/**
+ * Add a new binary attribute to a person entry.
+ */
+@Test
+public void testAddNewBinaryAttributeValue() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- while (enm.hasMore())
- {
- SearchResult sr = enm.next();
- attrs = sr.getAttributes();
- Attribute attr = attrs.get("userCertificate");
- assertNotNull(attr);
- assertTrue( attr.contains( newValue ) );
- byte[] certificate = (byte[])attr.get();
- assertTrue( Arrays.equals( newValue, certificate ) );
- assertEquals( 1, attr.size() );
- }
+ // Add a binary attribute
+ byte[] newValue = new byte[]
+ { 0x00, 0x01, 0x02, 0x03 };
+ Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue, true );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that attribute value is added
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "userCertificate" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( newValue ) );
+ byte[] certificate = ( byte[] ) attr.get();
+ assertTrue( Arrays.equals( newValue, certificate ) );
+ assertEquals( 1, attr.size() );
+}
- }
+/**
+ * Add a new attribute to a person entry.
+ */
+@Test
+public void testAddNewBinaryAttributeValueAbove0x80() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
- /**
- * Add a new ;binary attribute with bytes greater than 0x80
- * to a person entry.
- * Test for DIRSERVER-1146
- *
- * @throws NamingException
- */
- public void testAddNewBinaryAttributeValue0x80() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Add a ;binary attribute with high-bytes
- byte[] newValue = new byte[]{(byte)0x80, (byte)0x81, (byte)0x82, (byte)0x83};
- Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+ // Add a binary attribute
+ byte[] newValue = new byte[]
+ { ( byte ) 0x80, ( byte ) 0x81, ( byte ) 0x82, ( byte ) 0x83 };
+ Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue, true );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that attribute value is added
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "userCertificate" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( newValue ) );
+ byte[] certificate = ( byte[] ) attr.get();
+ assertTrue( Arrays.equals( newValue, certificate ) );
+ assertEquals( 1, attr.size() );
+}
+
+
+/**
+ * Add a new binary attribute to a person entry.
+ */
+@Test
+public void testRetrieveEntryWithBinaryAttributeValue() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+
+ // Add a ;binary attribute
+ byte[] newValue = new byte[]
+ { 0x00, 0x01, 0x02, 0x03 };
+ Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Search entry an request ;binary attribute
+ SearchControls sctls = new SearchControls();
+ sctls.setSearchScope( SearchControls.OBJECT_SCOPE );
+ sctls.setReturningAttributes( new String[]
+ { "userCertificate;binary" } );
+ String filter = "(objectClass=*)";
+ String base = RDN_TORI_AMOS;
+
+ // Test that ;binary attribute is present
+ NamingEnumeration<SearchResult> enm = ctx.search( base, filter, sctls );
+ assertTrue( enm.hasMore() );
- // Verify, that attribute value is added
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ while ( enm.hasMore() )
+ {
+ SearchResult sr = enm.next();
+ attrs = sr.getAttributes();
Attribute attr = attrs.get( "userCertificate" );
assertNotNull( attr );
assertTrue( attr.contains( newValue ) );
- byte[] certificate = (byte[])attr.get();
+ byte[] certificate = ( byte[] ) attr.get();
assertTrue( Arrays.equals( newValue, certificate ) );
assertEquals( 1, attr.size() );
- }}
+ }
+
+}
+
+
+/**
+ * Add a new ;binary attribute with bytes greater than 0x80
+ * to a person entry.
+ * Test for DIRSERVER-1146
+ *
+ * @throws NamingException
+ */
+public void testAddNewBinaryAttributeValue0x80() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+
+ // Add a ;binary attribute with high-bytes
+ byte[] newValue = new byte[]
+ { ( byte ) 0x80, ( byte ) 0x81, ( byte ) 0x82, ( byte ) 0x83 };
+ Attributes attrs = new BasicAttributes( "userCertificate;binary", newValue );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that attribute value is added
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ Attribute attr = attrs.get( "userCertificate" );
+ assertNotNull( attr );
+ assertTrue( attr.contains( newValue ) );
+ byte[] certificate = ( byte[] ) attr.get();
+ assertTrue( Arrays.equals( newValue, certificate ) );
+ assertEquals( 1, attr.size() );
+}
+}
Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyMultipleChangesIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyMultipleChangesIT.java?rev=1235328&r1=1235327&r2=1235328&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyMultipleChangesIT.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyMultipleChangesIT.java Tue Jan 24 16:22:33 2012
@@ -49,139 +49,143 @@ import org.junit.runner.RunWith;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-@RunWith ( FrameworkRunner.class )
+@RunWith(FrameworkRunner.class)
//@CreateDS( name="ModifyMultipleChangesIT-class", enableChangeLog=false )
-@CreateLdapServer (
- transports =
- {
- @CreateTransport( protocol = "LDAP" )
+@CreateLdapServer(
+ transports =
+ {
+ @CreateTransport(protocol = "LDAP")
})
-@ApplyLdifs( {
- // Entry # 1
- "dn: cn=Tori Amos,ou=system",
- "objectClass: inetOrgPerson",
- "objectClass: organizationalPerson",
- "objectClass: person",
- "objectClass: top",
- "description: an American singer-songwriter",
- "cn: Tori Amos",
- "sn: Amos",
- // Entry # 2
- "dn: cn=Debbie Harry,ou=system",
- "objectClass: inetOrgPerson",
- "objectClass: organizationalPerson",
- "objectClass: person",
- "objectClass: top",
- "cn: Debbie Harry",
- "sn: Harry"
- }
-)
-public class ModifyMultipleChangesIT extends AbstractLdapTestUnit
+@ApplyLdifs(
+ {
+ // Entry # 1
+ "dn: cn=Tori Amos,ou=system",
+ "objectClass: inetOrgPerson",
+ "objectClass: organizationalPerson",
+ "objectClass: person",
+ "objectClass: top",
+ "description: an American singer-songwriter",
+ "cn: Tori Amos",
+ "sn: Amos",
+ // Entry # 2
+ "dn: cn=Debbie Harry,ou=system",
+ "objectClass: inetOrgPerson",
+ "objectClass: organizationalPerson",
+ "objectClass: person",
+ "objectClass: top",
+ "cn: Debbie Harry",
+ "sn: Harry"
+})
+public class ModifyMultipleChangesIT extends AbstractLdapTestUnit
{
- private static final String BASE = "ou=system";
- private static final String RDN_TORI_AMOS = "cn=Tori Amos";
+private static final String BASE = "ou=system";
+private static final String RDN_TORI_AMOS = "cn=Tori Amos";
- /**
- * Creation of required attributes of a person entry.
- */
- protected Attributes getPersonAttributes( String sn, String cn )
- {
- Attributes attributes = new BasicAttributes( true );
- Attribute attribute = new BasicAttribute( "objectClass" );
- attribute.add( "top" );
- attribute.add( "person" );
- attribute.add( "organizationalperson" );
- attribute.add( "inetorgperson" );
- attributes.put( attribute );
- attributes.put( "cn", cn );
- attributes.put( "sn", sn );
- return attributes;
- }
+/**
+ * Creation of required attributes of a person entry.
+ */
+protected Attributes getPersonAttributes( String sn, String cn )
+{
+ Attributes attributes = new BasicAttributes( true );
+ Attribute attribute = new BasicAttribute( "objectClass" );
+ attribute.add( "top" );
+ attribute.add( "person" );
+ attribute.add( "organizationalperson" );
+ attribute.add( "inetorgperson" );
+ attributes.put( attribute );
+ attributes.put( "cn", cn );
+ attributes.put( "sn", sn );
+ return attributes;
+}
- /**
- * Add a new attribute with two values.
- */
- @Test
- public void testAddNewAttributeValues() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Add telephoneNumber attribute
- String[] newValues =
- { "1234567890", "999999999" };
- Attribute attr = new BasicAttribute( "telephoneNumber" );
- attr.add( newValues[0] );
- attr.add( newValues[1] );
- Attributes attrs = new BasicAttributes( true );
- attrs.put( attr );
- ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
-
- // Verify, that
- // - case of attribute description is correct
- // - attribute values are present
- attrs = ctx.getAttributes( RDN_TORI_AMOS );
- attr = attrs.get( "telephoneNumber" );
- assertNotNull( attr );
- assertEquals( "telephoneNumber", attr.getID() );
- assertTrue( attr.contains( newValues[0] ) );
- assertTrue( attr.contains( newValues[1] ) );
- assertEquals( newValues.length, attr.size() );
- }
-
- /**
- * Create a person entry and perform a modify op, in which
- * we modify an attribute two times.
- */
- @Test
- public void testAttributeValueMultiMofificationDIRSERVER_636() throws Exception
- {
- DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
-
- // Create a person entry
- Attributes attrs = getPersonAttributes("Bush", "Kate Bush");
- String rdn = "cn=Kate Bush";
- ctx.createSubcontext(rdn, attrs);
-
- // Add a description with two values
- String[] descriptions = {
- "Kate Bush is a British singer-songwriter.",
- "She has become one of the most influential female artists of the twentieth century." };
- Attribute desc1 = new BasicAttribute("description");
- desc1.add(descriptions[0]);
- desc1.add(descriptions[1]);
-
- ModificationItem addModOp = new ModificationItem(
- DirContext.ADD_ATTRIBUTE, desc1);
-
- Attribute desc2 = new BasicAttribute("description");
- desc2.add(descriptions[1]);
- ModificationItem delModOp = new ModificationItem(
- DirContext.REMOVE_ATTRIBUTE, desc2);
-
- ctx.modifyAttributes(rdn, new ModificationItem[] { addModOp,
- delModOp });
-
- SearchControls sctls = new SearchControls();
- sctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- String filter = "(cn=*Bush)";
- String base = "";
-
- // Check entry
- NamingEnumeration<SearchResult> enm = ctx.search(base, filter, sctls);
- assertTrue(enm.hasMore());
-
- while (enm.hasMore()) {
- SearchResult sr = enm.next();
- attrs = sr.getAttributes();
- Attribute desc = sr.getAttributes().get("description");
- assertEquals(1, desc.size());
- assertTrue(desc.contains(descriptions[0]));
- }
+/**
+ * Add a new attribute with two values.
+ */
+@Test
+public void testAddNewAttributeValues() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+
+ // Add telephoneNumber attribute
+ String[] newValues =
+ { "1234567890", "999999999" };
+ Attribute attr = new BasicAttribute( "telephoneNumber" );
+ attr.add( newValues[0] );
+ attr.add( newValues[1] );
+ Attributes attrs = new BasicAttributes( true );
+ attrs.put( attr );
+ ctx.modifyAttributes( RDN_TORI_AMOS, DirContext.ADD_ATTRIBUTE, attrs );
+
+ // Verify, that
+ // - case of attribute description is correct
+ // - attribute values are present
+ attrs = ctx.getAttributes( RDN_TORI_AMOS );
+ attr = attrs.get( "telephoneNumber" );
+ assertNotNull( attr );
+ assertEquals( "telephoneNumber", attr.getID() );
+ assertTrue( attr.contains( newValues[0] ) );
+ assertTrue( attr.contains( newValues[1] ) );
+ assertEquals( newValues.length, attr.size() );
+}
- // Remove the person entry
- ctx.destroySubcontext(rdn);
+
+/**
+ * Create a person entry and perform a modify op, in which
+ * we modify an attribute two times.
+ */
+@Test
+public void testAttributeValueMultiMofificationDIRSERVER_636() throws Exception
+{
+ DirContext ctx = ( DirContext ) getWiredContext( getLdapServer() ).lookup( BASE );
+
+ // Create a person entry
+ Attributes attrs = getPersonAttributes( "Bush", "Kate Bush" );
+ String rdn = "cn=Kate Bush";
+ ctx.createSubcontext( rdn, attrs );
+
+ // Add a description with two values
+ String[] descriptions =
+ {
+ "Kate Bush is a British singer-songwriter.",
+ "She has become one of the most influential female artists of the twentieth century." };
+ Attribute desc1 = new BasicAttribute( "description" );
+ desc1.add( descriptions[0] );
+ desc1.add( descriptions[1] );
+
+ ModificationItem addModOp = new ModificationItem(
+ DirContext.ADD_ATTRIBUTE, desc1 );
+
+ Attribute desc2 = new BasicAttribute( "description" );
+ desc2.add( descriptions[1] );
+ ModificationItem delModOp = new ModificationItem(
+ DirContext.REMOVE_ATTRIBUTE, desc2 );
+
+ ctx.modifyAttributes( rdn, new ModificationItem[]
+ { addModOp,
+ delModOp } );
+
+ SearchControls sctls = new SearchControls();
+ sctls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+ String filter = "(cn=*Bush)";
+ String base = "";
+
+ // Check entry
+ NamingEnumeration<SearchResult> enm = ctx.search( base, filter, sctls );
+ assertTrue( enm.hasMore() );
+
+ while ( enm.hasMore() )
+ {
+ SearchResult sr = enm.next();
+ attrs = sr.getAttributes();
+ Attribute desc = sr.getAttributes().get( "description" );
+ assertEquals( 1, desc.size() );
+ assertTrue( desc.contains( descriptions[0] ) );
}
+
+ // Remove the person entry
+ ctx.destroySubcontext( rdn );
+}
}
Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReferralIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReferralIT.java?rev=1235328&r1=1235327&r2=1235328&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReferralIT.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/modify/ModifyReferralIT.java Tue Jan 24 16:22:33 2012
@@ -72,150 +72,156 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-@RunWith ( FrameworkRunner.class )
+@RunWith(FrameworkRunner.class)
//@CreateDS( name="ModifyReferralIT-class", enableChangeLog=false )
-@CreateLdapServer (
- transports =
- {
- @CreateTransport( protocol = "LDAP" )
+@CreateLdapServer(
+ transports =
+ {
+ @CreateTransport(protocol = "LDAP")
})
-@ApplyLdifs( {
- // Entry # 1
- "dn: uid=akarasulu,ou=users,ou=system",
- "objectClass: uidObject",
- "objectClass: person",
- "objectClass: top",
- "uid: akarasulu",
- "cn: Alex Karasulu",
- "sn: karasulu",
- // Entry # 2
- "dn: ou=Computers,uid=akarasulu,ou=users,ou=system",
- "objectClass: organizationalUnit",
- "objectClass: top",
- "ou: computers",
- "description: Computers for Alex",
- "seeAlso: ou=Machines,uid=akarasulu,ou=users,ou=system",
- // Entry # 3
- "dn: uid=akarasuluref,ou=users,ou=system",
- "objectClass: extensibleObject",
- "objectClass: referral",
- "objectClass: top",
- "uid: akarasuluref",
- "ref: ldap://localhost:10389/uid=akarasulu,ou=users,ou=system",
- "ref: ldap://foo:10389/uid=akarasulu,ou=users,ou=system",
- "ref: ldap://bar:10389/uid=akarasulu,ou=users,ou=system"
- }
-)
-public class ModifyReferralIT extends AbstractLdapTestUnit
+@ApplyLdifs(
+ {
+ // Entry # 1
+ "dn: uid=akarasulu,ou=users,ou=system",
+ "objectClass: uidObject",
+ "objectClass: person",
+ "objectClass: top",
+ "uid: akarasulu",
+ "cn: Alex Karasulu",
+ "sn: karasulu",
+ // Entry # 2
+ "dn: ou=Computers,uid=akarasulu,ou=users,ou=system",
+ "objectClass: organizationalUnit",
+ "objectClass: top",
+ "ou: computers",
+ "description: Computers for Alex",
+ "seeAlso: ou=Machines,uid=akarasulu,ou=users,ou=system",
+ // Entry # 3
+ "dn: uid=akarasuluref,ou=users,ou=system",
+ "objectClass: extensibleObject",
+ "objectClass: referral",
+ "objectClass: top",
+ "uid: akarasuluref",
+ "ref: ldap://localhost:10389/uid=akarasulu,ou=users,ou=system",
+ "ref: ldap://foo:10389/uid=akarasulu,ou=users,ou=system",
+ "ref: ldap://bar:10389/uid=akarasulu,ou=users,ou=system"
+})
+public class ModifyReferralIT extends AbstractLdapTestUnit
+{
+private static final Logger LOG = LoggerFactory.getLogger( CompareIT.class );
+
+
+/**
+ * Tests modify operation on referral entry with the ManageDsaIT control.
+ */
+@Test
+public void testOnReferralWithManageDsaITControl() throws Exception
+{
+ LdapConnection conn = getWiredConnection( getLdapServer() );
+
+ ManageDsaIT manageDSAIT = new ManageDsaITImpl();
+ manageDSAIT.setCritical( true );
+
+ // modify success
+ ModifyRequest modifyRequest = new ModifyRequestImpl();
+ modifyRequest.setName( new Dn( "uid=akarasuluref,ou=users,ou=system" ) );
+ modifyRequest.add( "description", "referral to akarasulu" );
+ modifyRequest.addControl( manageDSAIT );
+
+ conn.modify( modifyRequest );
+
+ assertTrue( conn.compare( "uid=akarasuluref,ou=users,ou=system", "description", "referral to akarasulu" ) );
+
+ conn.close();
+}
+
+
+/**
+ * Tests modify operation on referral entries without the
+ * ManageDsaIT control. Referrals are sent back to the client with a
+ * non-success result code.
+ */
+@Test
+public void testOnReferral() throws Exception
+{
+ LdapConnection conn = getWiredConnection( getLdapServer() );
+
+ // referrals failure
+ // modify success
+ ModifyRequest modifyRequest = new ModifyRequestImpl();
+ modifyRequest.setName( new Dn( "uid=akarasuluref,ou=users,ou=system" ) );
+ modifyRequest.add( "description", "referral to akarasulu" );
+
+ ModifyResponse modifyResponse = conn.modify( modifyRequest );
+
+ assertEquals( ResultCodeEnum.REFERRAL, modifyResponse.getLdapResult().getResultCode() );
+
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://localhost:10389/uid=akarasulu,ou=users,ou=system" ) );
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://foo:10389/uid=akarasulu,ou=users,ou=system" ) );
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://bar:10389/uid=akarasulu,ou=users,ou=system" ) );
+
+ conn.close();
+}
+
+
+/**
+ * Tests modify operation on normal and referral entries without the
+ * ManageDsaIT control using JNDI instead of the Netscape API. Referrals
+ * are sent back to the client with a non-success result code.
+ */
+@Test
+public void testThrowOnReferralWithJndi() throws Exception
{
- private static final Logger LOG = LoggerFactory.getLogger( CompareIT.class );
-
+ LdapContext ctx = getWiredContextThrowOnRefferal( getLdapServer() );
- /**
- * Tests modify operation on referral entry with the ManageDsaIT control.
- */
- @Test
- public void testOnReferralWithManageDsaITControl() throws Exception
+ // modify failure
+ Attribute attr = new BasicAttribute( "description", "referral to akarasulu" );
+ ModificationItem mod = new ModificationItem( DirContext.ADD_ATTRIBUTE, attr );
+
+ try
{
- LdapConnection conn = getWiredConnection( getLdapServer() );
-
- ManageDsaIT manageDSAIT = new ManageDsaITImpl();
- manageDSAIT.setCritical( true );
-
-
- // modify success
- ModifyRequest modifyRequest = new ModifyRequestImpl();
- modifyRequest.setName( new Dn( "uid=akarasuluref,ou=users,ou=system" ) );
- modifyRequest.add( "description", "referral to akarasulu" );
- modifyRequest.addControl( manageDSAIT );
-
- conn.modify( modifyRequest );
-
- assertTrue( conn.compare( "uid=akarasuluref,ou=users,ou=system", "description", "referral to akarasulu" ) );
-
- conn.close();
+ ctx.modifyAttributes( "uid=akarasuluref,ou=users,ou=system", new ModificationItem[]
+ { mod } );
}
-
-
- /**
- * Tests modify operation on referral entries without the
- * ManageDsaIT control. Referrals are sent back to the client with a
- * non-success result code.
- */
- @Test
- public void testOnReferral() throws Exception
+ catch ( ReferralException e )
{
- LdapConnection conn = getWiredConnection( getLdapServer() );
-
- // referrals failure
- // modify success
- ModifyRequest modifyRequest = new ModifyRequestImpl();
- modifyRequest.setName( new Dn( "uid=akarasuluref,ou=users,ou=system" ) );
- modifyRequest.add( "description", "referral to akarasulu" );
-
- ModifyResponse modifyResponse = conn.modify( modifyRequest );
-
- assertEquals( ResultCodeEnum.REFERRAL, modifyResponse.getLdapResult().getResultCode() );
-
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://localhost:10389/uid=akarasulu,ou=users,ou=system" ) );
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://foo:10389/uid=akarasulu,ou=users,ou=system" ) );
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://bar:10389/uid=akarasulu,ou=users,ou=system" ) );
-
- conn.close();
+ // seems JNDI only returns the first referral URL and not all so we test for it
+ assertEquals( "ldap://localhost:10389/uid=akarasulu,ou=users,ou=system", e.getReferralInfo() );
}
-
-
- /**
- * Tests modify operation on normal and referral entries without the
- * ManageDsaIT control using JNDI instead of the Netscape API. Referrals
- * are sent back to the client with a non-success result code.
- */
- @Test
- public void testThrowOnReferralWithJndi() throws Exception
- {
- LdapContext ctx = getWiredContextThrowOnRefferal( getLdapServer() );
-
- // modify failure
- Attribute attr = new BasicAttribute( "description", "referral to akarasulu" );
- ModificationItem mod = new ModificationItem( DirContext.ADD_ATTRIBUTE, attr );
-
- try
- {
- ctx.modifyAttributes( "uid=akarasuluref,ou=users,ou=system", new ModificationItem[] { mod } );
- }
- catch ( ReferralException e )
- {
- // seems JNDI only returns the first referral URL and not all so we test for it
- assertEquals( "ldap://localhost:10389/uid=akarasulu,ou=users,ou=system", e.getReferralInfo() );
- }
- ctx.close();
- }
-
-
- /**
- * Tests referral handling when an ancestor is a referral.
- */
- @Test
- public void testAncestorReferral() throws Exception
- {
- LOG.debug( "" );
+ ctx.close();
+}
+
+
+/**
+ * Tests referral handling when an ancestor is a referral.
+ */
+@Test
+public void testAncestorReferral() throws Exception
+{
+ LOG.debug( "" );
- LdapConnection conn = getWiredConnection( getLdapServer() );
+ LdapConnection conn = getWiredConnection( getLdapServer() );
- // referrals failure
- ModifyRequest modifyRequest = new ModifyRequestImpl();
- modifyRequest.setName( new Dn( "ou=Computers,uid=akarasuluref,ou=users,ou=system" ) );
- modifyRequest.add( "ou", "Machines" );
-
- ModifyResponse modifyResponse = conn.modify( modifyRequest );
+ // referrals failure
+ ModifyRequest modifyRequest = new ModifyRequestImpl();
+ modifyRequest.setName( new Dn( "ou=Computers,uid=akarasuluref,ou=users,ou=system" ) );
+ modifyRequest.add( "ou", "Machines" );
- assertEquals( ResultCodeEnum.REFERRAL, modifyResponse.getLdapResult().getResultCode() );
+ ModifyResponse modifyResponse = conn.modify( modifyRequest );
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://localhost:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://foo:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
- assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls().contains( "ldap://bar:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
+ assertEquals( ResultCodeEnum.REFERRAL, modifyResponse.getLdapResult().getResultCode() );
- conn.close();
- }
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://localhost:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://foo:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
+ assertTrue( modifyResponse.getLdapResult().getReferral().getLdapUrls()
+ .contains( "ldap://bar:10389/ou=Computers,uid=akarasulu,ou=users,ou=system" ) );
+
+ conn.close();
+}
}