You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/03/18 17:02:48 UTC

svn commit: r924875 - /directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java

Author: kayyagari
Date: Thu Mar 18 16:02:48 2010
New Revision: 924875

URL: http://svn.apache.org/viewvc?rev=924875&view=rev
Log:
replaced jndi code with client-api

Modified:
    directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java

Modified: directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java?rev=924875&r1=924874&r2=924875&view=diff
==============================================================================
--- directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java (original)
+++ directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/exception/ExceptionServiceIT.java Thu Mar 18 16:02:48 2010
@@ -20,34 +20,35 @@
 package org.apache.directory.server.core.exception;
 
 
-import static org.apache.directory.server.core.integ.IntegrationUtils.getSystemContext;
+import static org.apache.directory.server.core.integ.IntegrationUtils.getAdminConnection;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.ModificationItem;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.LdapContext;
 
+import org.apache.directory.ldap.client.api.LdapConnection;
+import org.apache.directory.ldap.client.api.message.AddResponse;
+import org.apache.directory.ldap.client.api.message.DeleteResponse;
+import org.apache.directory.ldap.client.api.message.ModifyDnResponse;
+import org.apache.directory.ldap.client.api.message.ModifyRequest;
+import org.apache.directory.ldap.client.api.message.ModifyResponse;
+import org.apache.directory.ldap.client.api.message.SearchResponse;
+import org.apache.directory.ldap.client.api.message.SearchResultEntry;
+import org.apache.directory.server.annotations.CreateLdapServer;
+import org.apache.directory.server.annotations.CreateTransport;
+import org.apache.directory.server.constants.ServerDNConstants;
 import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
 import org.apache.directory.server.core.integ.FrameworkRunner;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
-import org.apache.directory.shared.ldap.exception.LdapContextNotEmptyException;
-import org.apache.directory.shared.ldap.exception.LdapEntryAlreadyExistsException;
-import org.apache.directory.shared.ldap.exception.LdapNoSuchObjectException;
-import org.apache.directory.shared.ldap.exception.LdapSchemaViolationException;
-import org.apache.directory.shared.ldap.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.cursor.Cursor;
+import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.EntryAttribute;
+import org.apache.directory.shared.ldap.entry.client.DefaultClientEntry;
+import org.apache.directory.shared.ldap.filter.SearchScope;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.name.RDN;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -59,27 +60,33 @@ import org.junit.runner.RunWith;
  * @version $Rev$
  */
 @RunWith ( FrameworkRunner.class )
+@CreateLdapServer(transports =
+    { @CreateTransport(protocol = "LDAP") })
 public class ExceptionServiceIT extends AbstractLdapTestUnit
 {
-    private DirContext createSubContext( String type, String value ) throws Exception
+    
+    private AddResponse createSubContext( String type, String value ) throws Exception
     {
-        return createSubContext( getSystemContext( service ), type, value );
+        return createSubContext( new DN( ServerDNConstants.SYSTEM_DN ), type, value );
     }
+    
 
-
-    private DirContext createSubContext( DirContext ctx, String type, String value ) throws NamingException
+    private AddResponse createSubContext( DN parent, String type, String value ) throws Exception
     {
-        Attributes subentry = LdifUtils.createAttributes( 
-            "objectClass: top",
-            "objectClass: person",
-            "objectClass: OrganizationalPerson",
-            "sn", value,
-            "cn", value );
-
-        return ctx.createSubcontext( type + "=" + value, subentry );
+        DN dn = ( DN ) parent.clone();
+        dn.add( "ou=" + value );
+        Entry entry = new DefaultClientEntry( dn );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "person" );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "OrganizationalPerson" );
+        entry.add( SchemaConstants.CN_AT, value );
+        entry.add( SchemaConstants.SN_AT, value );
+        
+        AddResponse resp = getAdminConnection( ldapServer ).add( entry );
+        
+        return resp;
     }
 
-
+    
     // ------------------------------------------------------------------------
     // Search Operation Tests
     // ------------------------------------------------------------------------
@@ -88,22 +95,13 @@ public class ExceptionServiceIT extends 
     /**
      * Test search operation failure when the search base is non-existant.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testFailSearchNoSuchObject() throws Exception
     {
-        SearchControls ctls = new SearchControls();
-        try
-        {
-            getSystemContext( service ).search( "ou=blah", "(objectClass=*)", ctls );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        Cursor<SearchResponse> cursor = getAdminConnection( ldapServer ).search( "ou=blah", "(objectClass=*)", SearchScope.ONELEVEL, "*" );
+        assertFalse( cursor.next() );
     }
 
 
@@ -111,22 +109,14 @@ public class ExceptionServiceIT extends 
      * Search operation control to test if normal search operations occur
      * correctly.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testSearchControl() throws Exception
     {
-        SearchControls ctls = new SearchControls();
-        NamingEnumeration<SearchResult> list = getSystemContext( service ).search( "ou=users", "(objectClass=*)", ctls );
+        Cursor<SearchResponse> cursor = getAdminConnection( ldapServer ).search( "ou=users,ou=system", "(objectClass=*)", SearchScope.ONELEVEL, "*" );
 
-        if ( list.hasMore() )
-        {
-            SearchResult result = list.next();
-            assertNotNull( result.getAttributes() );
-            assertEquals( "uid=akarasulu,ou=users,ou=system", result.getName() );
-        }
-
-        assertFalse( list.hasMore() );
+        assertFalse( cursor.next() );
     }
 
 
@@ -137,86 +127,47 @@ public class ExceptionServiceIT extends 
     /**
      * Test move operation failure when the object moved is non-existant.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testFailMoveEntryAlreadyExists() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            Attributes attrs = new BasicAttributes( "ou", "users", true );
-            Attribute attr = new BasicAttribute( "ObjectClass" );
-            attr.add( "top"  );
-            attr.add( "OrganizationalUnit" );
-            attrs.put( attr );
-
-            sysRoot.createSubcontext( "ou=users,ou=groups", attrs );
-            sysRoot.rename( "ou=users", "ou=users,ou=groups" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapEntryAlreadyExistsException e )
-        {
-            assertEquals( "ou=users,ou=groups,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, e.getResultCode() );
-        }
-
-        try
-        {
-            Attributes attrs = new BasicAttributes( "ou", "uzerz", true );
-            Attribute attr = new BasicAttribute( "ObjectClass" );
-            attr.add( "top"  );
-            attr.add( "OrganizationalUnit" );
-            attrs.put( attr );
-
-            sysRoot.createSubcontext( "ou=uzerz,ou=groups", attrs );
-            sysRoot.addToEnvironment( "java.naming.ldap.deleteRDN", "false" );
-            sysRoot.rename( "ou=users", "ou=uzerz,ou=groups" );
-            sysRoot.removeFromEnvironment( "java.naming.ldap.deleteRDN" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapEntryAlreadyExistsException e )
-        {
-            assertEquals( "ou=uzerz,ou=groups,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, e.getResultCode() );
-        }
+        Entry entry = new DefaultClientEntry( new DN( "ou=users,ou=groups,ou=system" ) );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "OrganizationalUnit" );
+        entry.add( SchemaConstants.OU_AT, "users" );
+        
+        connection.add( entry );
+        ModifyDnResponse resp = connection.rename( entry.getDn(), new RDN( "ou=users" ) );
+        assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, resp.getLdapResult().getResultCode() );
+
+        Entry userzEntry = new DefaultClientEntry( new DN( "ou=userz,ou=groups,ou=system" ) );
+        userzEntry.add( SchemaConstants.OBJECT_CLASS_AT, "OrganizationalUnit" );
+        userzEntry.add( SchemaConstants.OU_AT, "userz" );
+        
+        connection.add( userzEntry );
+        
+        ModifyDnResponse modResp = connection.rename( "ou=userz,ou=groups,ou=system", "ou=users", true );
+        assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, modResp.getLdapResult().getResultCode() );
     }
 
 
     /**
      * Test move operation failure when the object moved is non-existant.
 
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testFailMoveNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.rename( "ou=blah", "ou=blah,ou=groups" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        ModifyDnResponse resp = connection.rename( "ou=blah,ou=groups,ou=system", "ou=blah1" );
+        assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, resp.getLdapResult().getResultCode() );
 
-        try
-        {
-            sysRoot.addToEnvironment( "java.naming.ldap.deleteRDN", "false" );
-            sysRoot.rename( "ou=blah", "ou=blah2,ou=groups" );
-            sysRoot.removeFromEnvironment( "java.naming.ldap.deleteRDN" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        resp = connection.rename( "ou=blah,ou=groups,ou=system", "ou=blah1" );
+        assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, resp.getLdapResult().getResultCode() );
     }
 
 
@@ -224,26 +175,19 @@ public class ExceptionServiceIT extends 
      * Move operation control to test if normal move operations occur
      * correctly.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testMoveControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        sysRoot.rename( "ou=users", "ou=users,ou=groups" );
-        assertNotNull( sysRoot.lookup( "ou=users,ou=groups" ) );
+        connection.move( "ou=users,ou=system", "ou=groups,ou=system" );
+        Entry entry = ( ( SearchResultEntry ) connection.lookup( "ou=users,ou=groups,ou=system" ) ).getEntry();
+        assertNotNull( entry );
 
-        try
-        {
-            sysRoot.lookup( "ou=users" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( NamingException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertTrue( e instanceof LdapNoSuchObjectException );
-        }
+        SearchResponse res = connection.lookup( "ou=users,ou=system" );
+        assertNull( res );
     }
 
 
@@ -255,46 +199,30 @@ public class ExceptionServiceIT extends 
     /**
      * Test modifyRdn operation failure when the object renamed is non-existant.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testFailModifyRdnEntryAlreadyExists() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.rename( "ou=users", "ou=groups" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapEntryAlreadyExistsException e )
-        {
-            assertEquals( "ou=groups,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, e.getResultCode() );
-        }
+        ModifyDnResponse resp = connection.rename( "ou=users,ou=system", "ou=groups" );
+        assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, resp.getLdapResult().getResultCode() );
     }
 
 
     /**
      * Test modifyRdn operation failure when the object renamed is non-existant.
      *
-     * @throws NamingException on error
+     * @throws Exception on error
      */
     @Test
     public void testFailModifyRdnNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.rename( "ou=blah", "ou=asdf" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=blah,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        ModifyDnResponse resp = connection.rename( "ou=blah,ou=system", "ou=asdf" );
+        assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, resp.getLdapResult().getResultCode() );
     }
 
 
@@ -307,21 +235,12 @@ public class ExceptionServiceIT extends 
     @Test
     public void testModifyRdnControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        sysRoot.rename( "ou=users", "ou=asdf" );
-        assertNotNull( sysRoot.lookup( "ou=asdf" ) );
+        connection.rename( "ou=users,ou=system", "ou=asdf" );
+        assertNotNull( connection.lookup( "ou=asdf,ou=system" ) );
 
-        try
-        {
-            sysRoot.lookup( "ou=users" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( NamingException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertTrue( e instanceof LdapNoSuchObjectException );
-        }
+        assertNull( connection.lookup( "ou=users,ou=system" ) );
     }
 
 
@@ -338,38 +257,13 @@ public class ExceptionServiceIT extends 
     @Test
     public void testFailModifyNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
-
-        Attributes attrs = new BasicAttributes( true );
-        Attribute ou = new BasicAttribute( "ou" );
-        ou.add( "users" );
-        ou.add( "dummyValue" );
-        attrs.put( ou );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.modifyAttributes( "ou=blah", DirContext.ADD_ATTRIBUTE, attrs );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
-
-        ModificationItem[] mods = new ModificationItem[]
-            { new ModificationItem( DirContext.ADD_ATTRIBUTE, ou ) };
-
-        try
-        {
-            sysRoot.modifyAttributes( "ou=blah", mods );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        ModifyRequest modReq = new ModifyRequest( new DN( "ou=blah,ou=system" ) );
+        modReq.add( SchemaConstants.OU_AT, "another-value" );
+        
+        ModifyResponse modResp = connection.modify( modReq );
+        assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, modResp.getLdapResult().getResultCode() );
     }
 
 
@@ -382,27 +276,16 @@ public class ExceptionServiceIT extends 
     @Test
     public void testModifyControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        Attributes attrs = new BasicAttributes( true );
-        Attribute attr = new BasicAttribute( "ou" );
-        attr.add( "dummyValue" );
-        attrs.put( attr );
-        sysRoot.modifyAttributes( "ou=users", DirContext.ADD_ATTRIBUTE, attrs );
-        Attribute ou = sysRoot.getAttributes( "ou=users" ).get( "ou" );
+        ModifyRequest modReq = new ModifyRequest( new DN( "ou=users,ou=system" ) );
+        modReq.add( SchemaConstants.OU_AT, "dummyValue" );
+        
+        connection.modify( modReq );
+        Entry entry = ( ( SearchResultEntry ) connection.lookup( "ou=users,ou=system" ) ).getEntry();
+        EntryAttribute ou = entry.get( "ou" );
         assertTrue( ou.contains( "users" ) );
         assertTrue( ou.contains( "dummyValue" ) );
-
-        attr = new BasicAttribute( "ou" );
-        attr.add( "another" );
-        ModificationItem[] mods = new ModificationItem[]
-            { new ModificationItem( DirContext.ADD_ATTRIBUTE, attr ) };
-
-        sysRoot.modifyAttributes( "ou=users", mods );
-        ou = sysRoot.getAttributes( "ou=users" ).get( "ou" );
-        assertTrue( ou.contains( "users" ) );
-        assertTrue( ou.contains( "dummyValue" ) );
-        assertTrue( ou.contains( "another" ) );
     }
 
 
@@ -419,18 +302,9 @@ public class ExceptionServiceIT extends 
     @Test
     public void testFailLookupNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.lookup( "ou=blah" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        assertNull( connection.lookup( "ou=blah,ou=system" ) );
     }
 
 
@@ -443,11 +317,11 @@ public class ExceptionServiceIT extends 
     @Test
     public void testLookupControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        LdapContext ctx = ( LdapContext ) sysRoot.lookup( "ou=users" );
-        assertNotNull( ctx );
-        assertEquals( "users", ctx.getAttributes( "" ).get( "ou" ).get() );
+        Entry entry = ( ( SearchResultEntry ) connection.lookup( "ou=users,ou=system" ) ).getEntry();
+        assertNotNull( entry );
+        assertEquals( "users", entry.get( "ou" ).getString() );
     }
 
 
@@ -460,15 +334,15 @@ public class ExceptionServiceIT extends 
      * Test list operation failure when the base searched is non-existant.
      *
      * @throws Exception on error
-     */
+     *
     @Test
     public void testFailListNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
         try
         {
-            sysRoot.list( "ou=blah" );
+            connection.list( "ou=blah" );
             fail( "Execution should never get here due to exception!" );
         }
         catch ( LdapNoSuchObjectException e )
@@ -483,13 +357,13 @@ public class ExceptionServiceIT extends 
      * List operation control to test if normal list operations occur correctly.
      *
      * @throws Exception on error
-     */
+     *
     @Test
     public void testListControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        NamingEnumeration<?> list = sysRoot.list( "ou=users" );
+        NamingEnumeration<?> list = connection.list( "ou=users" );
 
         if ( list.hasMore() )
         {
@@ -500,7 +374,7 @@ public class ExceptionServiceIT extends 
 
         assertFalse( list.hasMore() );
     }
-
+    */
 
     // ------------------------------------------------------------------------
     // Add Operation Tests
@@ -516,50 +390,20 @@ public class ExceptionServiceIT extends 
     @Test
     public void testFailAddOnAlias() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        Attributes attrs = new BasicAttributes( true );
-        Attribute attr = new BasicAttribute( "objectClass" );
-        attr.add( "top" );
-        attr.add( "alias" );
-        attr.add( SchemaConstants.EXTENSIBLE_OBJECT_OC );
-        attrs.put( attr );
-        attrs.put( "aliasedObjectName", "ou=users,ou=system" );
+        Entry entry = new DefaultClientEntry( new DN( "cn=toanother,ou=system" ) );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "alias", SchemaConstants.EXTENSIBLE_OBJECT_OC );
+        entry.add( "aliasedObjectName", "ou=users,ou=system" );
 
-        sysRoot.createSubcontext( "cn=toanother", attrs );
+        connection.add( entry );
 
-        try
-        {
-            sysRoot.createSubcontext( "ou=blah,cn=toanother" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapSchemaViolationException e )
-        {
-            assertEquals( ResultCodeEnum.OBJECT_CLASS_VIOLATION, e.getResultCode() );
-        }
-    }
+        Entry aliasChild = new DefaultClientEntry( new DN( "ou=blah,cn=toanother,ou=system" ) );
+        entry.add( SchemaConstants.OBJECT_CLASS_AT, "organizationalUnit" );
+        entry.add( SchemaConstants.OU_AT, "blah" );
 
-
-    /**
-     * Tests for add operation failure when the parent of the entry to add does
-     * not exist.
-     *
-     * @throws Exception on error
-     */
-    @Test
-    public void testFailAddNoSuchEntry() throws Exception
-    {
-        LdapContext sysRoot = getSystemContext( service );
-
-        try
-        {
-            sysRoot.createSubcontext( "ou=blah,ou=abc" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapSchemaViolationException e )
-        {
-            assertEquals( ResultCodeEnum.OBJECT_CLASS_VIOLATION, e.getResultCode() );
-        }
+        AddResponse resp = connection.add( aliasChild );
+        assertEquals( ResultCodeEnum.OBJECT_CLASS_VIOLATION, resp.getLdapResult().getResultCode() );
     }
 
 
@@ -573,16 +417,8 @@ public class ExceptionServiceIT extends 
     {
         createSubContext( "ou", "blah");
 
-        try
-        {
-            createSubContext( "ou", "blah");
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapEntryAlreadyExistsException e )
-        {
-            assertEquals( "ou=blah,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, e.getResultCode() );
-        }
+        AddResponse resp = createSubContext( "ou", "blah");
+        assertEquals( ResultCodeEnum.ENTRY_ALREADY_EXISTS, resp.getLdapResult().getResultCode() );
     }
 
 
@@ -594,12 +430,12 @@ public class ExceptionServiceIT extends 
     @Test
     public void testAddControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        DirContext ctx = createSubContext( "ou", "blah");
-        createSubContext( ctx, "ou", "subctx");
-        Object obj = sysRoot.lookup( "ou=subctx,ou=blah" );
-        assertNotNull( obj );
+        AddResponse resp = createSubContext( "ou", "blah");
+        resp = createSubContext( new DN( "ou=blah,ou=system" ), "ou", "subctx");
+        Entry entry = ( ( SearchResultEntry ) connection.lookup( "ou=subctx,ou=blah,ou=system" ) ).getEntry();
+        assertNotNull( entry );
     }
 
 
@@ -616,21 +452,13 @@ public class ExceptionServiceIT extends 
     @Test
     public void testFailDeleteNotAllowedOnNonLeaf() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        DirContext ctx = createSubContext( "ou", "blah" );
-        createSubContext( ctx,  "ou", "subctx" );
+        AddResponse resp = createSubContext( "ou", "blah" );
+        resp = createSubContext( new DN( "ou=blah,ou=system" ),  "ou", "subctx" );
 
-        try
-        {
-            sysRoot.destroySubcontext( "ou=blah" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapContextNotEmptyException e )
-        {
-            assertEquals( "ou=blah,ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NOT_ALLOWED_ON_NON_LEAF, e.getResultCode() );
-        }
+        DeleteResponse delResp = connection.delete( "ou=blah,ou=system" );
+        assertEquals( ResultCodeEnum.NOT_ALLOWED_ON_NON_LEAF, delResp.getLdapResult().getResultCode() );
     }
 
 
@@ -643,18 +471,10 @@ public class ExceptionServiceIT extends 
     @Test
     public void testFailDeleteNoSuchObject() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        try
-        {
-            sysRoot.destroySubcontext( "ou=blah" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        DeleteResponse delResp = connection.delete( "ou=blah,ou=system" );
+        assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, delResp.getLdapResult().getResultCode() );
     }
 
 
@@ -666,23 +486,15 @@ public class ExceptionServiceIT extends 
     @Test
     public void testDeleteControl() throws Exception
     {
-        LdapContext sysRoot = getSystemContext( service );
+        LdapConnection connection = getAdminConnection( ldapServer );
 
-        createSubContext( "ou", "blah" );
+        AddResponse resp = createSubContext( "ou", "blah" );
 
-        Object obj = sysRoot.lookup( "ou=blah" );
-        assertNotNull( obj );
-        sysRoot.destroySubcontext( "ou=blah" );
+        Entry entry = ( ( SearchResultEntry ) connection.lookup( "ou=blah,ou=system" ) ).getEntry();
+        assertNotNull( entry );
+        connection.delete( entry.getDn() );
 
-        try
-        {
-            sysRoot.lookup( "ou=blah" );
-            fail( "Execution should never get here due to exception!" );
-        }
-        catch ( LdapNoSuchObjectException e )
-        {
-            assertEquals( "ou=system", e.getResolvedName().toString() );
-            assertEquals( ResultCodeEnum.NO_SUCH_OBJECT, e.getResultCode() );
-        }
+        Object respEntry = connection.lookup( entry.getDn().getName() );
+        assertNull( respEntry );
     }
 }