You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2008/06/10 23:22:27 UTC

svn commit: r666331 - in /directory/studio/trunk: connection-core/src/main/java/org/apache/directory/studio/connection/core/ connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ test-integration-core/src/main/java/org/apac...

Author: seelmann
Date: Tue Jun 10 14:22:27 2008
New Revision: 666331

URL: http://svn.apache.org/viewvc?rev=666331&view=rev
Log:
Fixed NPE, added some tests

Modified:
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/Utils.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
    directory/studio/trunk/test-integration-core/src/main/java/org/apache/directory/studio/test/integration/core/JNDIConnectionWrapperTest.java

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/Utils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/Utils.java?rev=666331&r1=666330&r2=666331&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/Utils.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/Utils.java Tue Jun 10 14:22:27 2008
@@ -155,7 +155,10 @@
         catch ( InvalidNameException e )
         {
         }
-        url.setAttributes( Arrays.asList( attributes ) );
+        if ( attributes != null )
+        {
+            url.setAttributes( Arrays.asList( attributes ) );
+        }
         url.setScope( scope );
         url.setFilter( filter );
         return url;

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java?rev=666331&r1=666330&r2=666331&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java Tue Jun 10 14:22:27 2008
@@ -39,7 +39,6 @@
 import javax.naming.ldap.Control;
 import javax.naming.ldap.InitialLdapContext;
 import javax.naming.ldap.LdapContext;
-import javax.naming.ldap.LdapName;
 import javax.naming.ldap.ManageReferralControl;
 import javax.naming.ldap.StartTlsRequest;
 import javax.naming.ldap.StartTlsResponse;
@@ -302,7 +301,7 @@
                     searchCtx.addToEnvironment( Context.REFERRAL, REFERRAL_THROW );
 
                     // perform the search
-                    NamingEnumeration<SearchResult> ne = searchCtx.search( new LdapName( searchBase ), filter,
+                    NamingEnumeration<SearchResult> ne = searchCtx.search( new LdapDN( searchBase ), filter,
                         searchControls );
                     namingEnumeration = new StudioNamingEnumeration( connection, ne, searchBase, filter,
                         searchControls, aliasesDereferencingMethod, referralsHandlingMethod, controls, requestNum,
@@ -454,7 +453,7 @@
                     modCtx.addToEnvironment( Context.REFERRAL, REFERRAL_THROW );
 
                     // perform modification
-                    modCtx.modifyAttributes( new LdapName( dn ), modificationItems );
+                    modCtx.modifyAttributes( new LdapDN( dn ), modificationItems );
                 }
                 catch ( ReferralException re )
                 {
@@ -555,7 +554,7 @@
                     }
 
                     // rename entry
-                    modCtx.rename( new LdapName( oldDn ), new LdapName( newDn ) );
+                    modCtx.rename( new LdapDN( oldDn ), new LdapDN( newDn ) );
                 }
                 catch ( ReferralException re )
                 {
@@ -645,7 +644,7 @@
                     modCtx.addToEnvironment( Context.REFERRAL, REFERRAL_THROW );
 
                     // create entry
-                    modCtx.createSubcontext( new LdapName( dn ), attributes );
+                    modCtx.createSubcontext( new LdapDN( dn ), attributes );
                 }
                 catch ( ReferralException re )
                 {
@@ -733,7 +732,7 @@
                     modCtx.addToEnvironment( Context.REFERRAL, REFERRAL_THROW );
 
                     // delete entry
-                    modCtx.destroySubcontext( new LdapName( dn ) );
+                    modCtx.destroySubcontext( new LdapDN( dn ) );
                 }
                 catch ( ReferralException re )
                 {
@@ -915,14 +914,23 @@
             IAuthHandler authHandler = ConnectionCorePlugin.getDefault().getAuthHandler();
             if ( authHandler == null )
             {
-                monitor.reportError( Messages.model__no_auth_handler, new Exception() );
+                NamingException namingException = new NamingException(  Messages.model__no_auth_handler );
+                monitor.reportError( Messages.model__no_auth_handler, namingException );
+                throw namingException;
             }
             ICredentials credentials = authHandler.getCredentials( connection.getConnectionParameter() );
             if ( credentials == null )
             {
+                CancelException cancelException = new CancelException();
                 monitor.setCanceled( true );
-                monitor.reportError( Messages.model__no_credentials, new CancelException() );
-                throw new CancelException();
+                monitor.reportError( Messages.model__no_credentials, cancelException );
+                throw cancelException;
+            }
+            if ( credentials.getBindPrincipal() == null || credentials.getBindPassword() == null )
+            {
+                NamingException namingException = new NamingException(  Messages.model__no_credentials );
+                monitor.reportError( Messages.model__no_credentials, namingException );
+                throw namingException;
             }
             bindPrincipal = credentials.getBindPrincipal();
             bindCredentials = credentials.getBindPassword();

Modified: directory/studio/trunk/test-integration-core/src/main/java/org/apache/directory/studio/test/integration/core/JNDIConnectionWrapperTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-core/src/main/java/org/apache/directory/studio/test/integration/core/JNDIConnectionWrapperTest.java?rev=666331&r1=666330&r2=666331&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-core/src/main/java/org/apache/directory/studio/test/integration/core/JNDIConnectionWrapperTest.java (original)
+++ directory/studio/trunk/test-integration-core/src/main/java/org/apache/directory/studio/test/integration/core/JNDIConnectionWrapperTest.java Tue Jun 10 14:22:27 2008
@@ -21,6 +21,16 @@
 package org.apache.directory.studio.test.integration.core;
 
 
+import java.net.ConnectException;
+import java.net.UnknownHostException;
+
+import javax.naming.AuthenticationException;
+import javax.naming.CommunicationException;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
+
 import org.apache.directory.server.unit.AbstractServerTest;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
@@ -29,6 +39,8 @@
 import org.apache.directory.studio.connection.core.IAuthHandler;
 import org.apache.directory.studio.connection.core.ICredentials;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
+import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
 import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
 import org.apache.directory.studio.connection.core.ConnectionParameter.EncryptionMethod;
 import org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper;
@@ -36,8 +48,7 @@
 
 
 /**
- * 
- * TODO JNDIConnectionWrapperTest.
+ * Tests the {@link JNDIConnectionWrapper}.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
@@ -54,7 +65,7 @@
 
 
     /**
-     * Connects to the server.
+     * Tests connecting to the server.
      */
     public void testConnect()
     {
@@ -72,11 +83,53 @@
 
         connectionWrapper.disconnect();
         assertFalse( connectionWrapper.isConnected() );
+
+        // TODO: SSL, StartTLS
+    }
+
+
+    /**
+     * Test failed connections to the server.
+     */
+    public void testConnectFailures()
+    {
+        StudioProgressMonitor monitor = null;
+        ConnectionParameter connectionParameter = null;
+        Connection connection = null;
+        JNDIConnectionWrapper connectionWrapper = null;
+
+        // invalid port
+        monitor = getProgressMonitor();
+        connectionParameter = new ConnectionParameter( null, "localhost", ldapServer.getIpPort() + 1,
+            EncryptionMethod.NONE, AuthenticationMethod.NONE, null, null, null, true, null );
+        connection = new Connection( connectionParameter );
+        connectionWrapper = connection.getJNDIConnectionWrapper();
+        connectionWrapper.connect( monitor );
+        assertFalse( connectionWrapper.isConnected() );
+        assertNotNull( monitor.getException() );
+        assertTrue( monitor.getException() instanceof CommunicationException );
+        assertNotNull( monitor.getException().getCause() );
+        assertTrue( monitor.getException().getCause() instanceof ConnectException );
+
+        // unknown host
+        monitor = getProgressMonitor();
+        connectionParameter = new ConnectionParameter( null, "555.555.555.555", ldapServer.getIpPort(),
+            EncryptionMethod.NONE, AuthenticationMethod.NONE, null, null, null, true, null );
+        connection = new Connection( connectionParameter );
+        connectionWrapper = connection.getJNDIConnectionWrapper();
+        connectionWrapper.connect( monitor );
+        assertFalse( connectionWrapper.isConnected() );
+        assertNotNull( monitor.getException() );
+        assertTrue( monitor.getException() instanceof CommunicationException );
+        assertNotNull( monitor.getException().getCause() );
+        assertTrue( monitor.getException().getCause() instanceof UnknownHostException );
+
+        // TODO: SSL, StartTLS
     }
 
 
     /**
-     * Binds to the server.
+     * Test binding to the server.
      */
     public void testBind()
     {
@@ -85,14 +138,7 @@
             EncryptionMethod.NONE, AuthenticationMethod.SIMPLE, "uid=admin,ou=system", "secret", null, true, null );
         Connection connection = new Connection( connectionParameter );
         JNDIConnectionWrapper connectionWrapper = connection.getJNDIConnectionWrapper();
-        IAuthHandler authHandler = new IAuthHandler()
-        {
-            public ICredentials getCredentials( ConnectionParameter connectionParameter )
-            {
-                return new Credentials( connectionParameter.getBindPrincipal(), connectionParameter.getBindPassword(),
-                    connectionParameter );
-            }
-        };
+        IAuthHandler authHandler = getAuthHandler();
         ConnectionCorePlugin.getDefault().setAuthHandler( authHandler );
 
         assertFalse( connectionWrapper.isConnected() );
@@ -105,6 +151,71 @@
         connectionWrapper.unbind();
         connectionWrapper.disconnect();
         assertFalse( connectionWrapper.isConnected() );
+
+    }
+
+
+    /**
+     * Test failed binds to the server.
+     */
+    public void testBindFailures()
+    {
+        StudioProgressMonitor monitor = null;
+        ConnectionParameter connectionParameter = null;
+        Connection connection = null;
+        JNDIConnectionWrapper connectionWrapper = null;
+
+        // simple auth without principal and credential
+        monitor = getProgressMonitor();
+        connectionParameter = new ConnectionParameter( null, "localhost", ldapServer.getIpPort(),
+            EncryptionMethod.NONE, AuthenticationMethod.SIMPLE, null, null, null, true, null );
+        connection = new Connection( connectionParameter );
+        connectionWrapper = connection.getJNDIConnectionWrapper();
+        connectionWrapper.connect( monitor );
+        connectionWrapper.bind( monitor );
+        assertFalse( connectionWrapper.isConnected() );
+        assertNotNull( monitor.getException() );
+        assertTrue( monitor.getException() instanceof NamingException );
+
+        // simple auth with invalid principal and credential
+        monitor = getProgressMonitor();
+        connectionParameter = new ConnectionParameter( null, "localhost", ldapServer.getIpPort(),
+            EncryptionMethod.NONE, AuthenticationMethod.SIMPLE, "uid=admin,ou=system", "bar", null, true, null );
+        connection = new Connection( connectionParameter );
+        connectionWrapper = connection.getJNDIConnectionWrapper();
+        connectionWrapper.connect( monitor );
+        connectionWrapper.bind( monitor );
+        assertFalse( connectionWrapper.isConnected() );
+        assertNotNull( monitor.getException() );
+        assertTrue( monitor.getException() instanceof AuthenticationException );
+    }
+
+
+    /**
+     * Test searching.
+     */
+    public void testSearch()
+    {
+        StudioProgressMonitor monitor = null;
+        ConnectionParameter connectionParameter = null;
+        Connection connection = null;
+        JNDIConnectionWrapper connectionWrapper = null;
+
+        // simple auth without principal and credential
+        monitor = getProgressMonitor();
+        connectionParameter = new ConnectionParameter( null, "localhost", ldapServer.getIpPort(),
+            EncryptionMethod.NONE, AuthenticationMethod.SIMPLE, "uid=admin,ou=system", "secret", null, true, null );
+        connection = new Connection( connectionParameter );
+        connectionWrapper = connection.getJNDIConnectionWrapper();
+        connectionWrapper.connect( monitor );
+        connectionWrapper.bind( monitor );
+        assertTrue( connectionWrapper.isConnected() );
+        assertNull( monitor.getException() );
+
+        SearchControls searchControls = new SearchControls();
+        NamingEnumeration<SearchResult> result = connectionWrapper.search( "ou=system", "objectClass=*",
+            searchControls, AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, null, monitor, null );
+        assertNotNull( result );
     }
 
 
@@ -123,4 +234,18 @@
         return monitor;
     }
 
+
+    private IAuthHandler getAuthHandler()
+    {
+        IAuthHandler authHandler = new IAuthHandler()
+        {
+            public ICredentials getCredentials( ConnectionParameter connectionParameter )
+            {
+                return new Credentials( connectionParameter.getBindPrincipal(), connectionParameter.getBindPassword(),
+                    connectionParameter );
+            }
+        };
+        return authHandler;
+    }
+
 }