Author: olamy
Date: Wed Sep 21 15:41:19 2011
New Revision: 1173726

URL: http://svn.apache.org/viewvc?rev=1173726&view=rev
Log:
[WAGON-350] add unit test for wagon ssh with an embedded ssh server : really 
username/password used !

Added:
    
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
Modified:
    
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestData.java
    
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/EmbeddedScpWagonTest.java

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java?rev=1173726&r1=1173725&r2=1173726&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
 Wed Sep 21 15:41:19 2011
@@ -27,19 +27,16 @@ import org.apache.sshd.server.Command;
 import org.apache.sshd.server.CommandFactory;
 import org.apache.sshd.server.FileSystemFactory;
 import org.apache.sshd.server.FileSystemView;
-import org.apache.sshd.server.PublickeyAuthenticator;
 import org.apache.sshd.server.SshFile;
 import org.apache.sshd.server.auth.UserAuthPassword;
 import org.apache.sshd.server.auth.UserAuthPublicKey;
 import org.apache.sshd.server.filesystem.NativeSshFile;
-import org.apache.sshd.server.session.ServerSession;
 import org.apache.sshd.server.session.SessionFactory;
 import org.apache.sshd.server.shell.ProcessShellFactory;
 import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
-import java.security.PublicKey;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -57,11 +54,17 @@ public class SshServerEmbedded
 
     private List<String> sshKeysResources = new ArrayList<String>();
 
+    public TestPublickeyAuthenticator publickeyAuthenticator;
+
+    public TestPasswordAuthenticator passwordAuthenticator = new 
TestPasswordAuthenticator();
+
+    private boolean keyAuthz;
+
     /**
      * @param wagonProtocol    scp scpexe
      * @param sshKeysResources paths in the classlaoder with ssh keys
      */
-    public SshServerEmbedded( String wagonProtocol, List<String> 
sshKeysResources )
+    public SshServerEmbedded( String wagonProtocol, List<String> 
sshKeysResources, boolean keyAuthz )
     {
         this.wagonProtocol = wagonProtocol;
 
@@ -69,7 +72,9 @@ public class SshServerEmbedded
 
         this.sshd = SshServer.setUpDefaultServer();
 
+        this.keyAuthz = keyAuthz;
 
+        publickeyAuthenticator = new TestPublickeyAuthenticator( this.keyAuthz 
);
     }
 
     /**
@@ -82,13 +87,11 @@ public class SshServerEmbedded
 
         sshd.setUserAuthFactories( Arrays.asList( new 
UserAuthPublicKey.Factory(), new UserAuthPassword.Factory() ) );
 
-        sshd.setPublickeyAuthenticator( new PublickeyAuthenticator()
-        {
-            public boolean authenticate( String s, PublicKey publicKey, 
ServerSession serverSession )
-            {
-                return true;
-            }
-        } );
+        sshd.setPublickeyAuthenticator( this.publickeyAuthenticator );
+
+        sshd.setPasswordAuthenticator( this.passwordAuthenticator );
+
+        sshd.setUserAuthFactories( Arrays.asList( new 
UserAuthPublicKey.Factory(), new UserAuthPassword.Factory() ) );
 
         ResourceKeyPairProvider resourceKeyPairProvider =
             new ResourceKeyPairProvider( sshKeysResources.toArray( new 
String[sshKeysResources.size()] ) );
@@ -100,7 +103,6 @@ public class SshServerEmbedded
             protected AbstractSession doCreateSession( IoSession ioSession )
                 throws Exception
             {
-                System.out.println( "doCreateSession" );
                 return super.doCreateSession( ioSession );
             }
         };
@@ -180,4 +182,5 @@ public class SshServerEmbedded
             super( FileUtils.normalize( fileName ), file, userName );
         }
     }
+
 }

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestData.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestData.java?rev=1173726&r1=1173725&r2=1173726&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestData.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestData.java
 Wed Sep 21 15:41:19 2011
@@ -45,6 +45,11 @@ public class TestData
         return System.getProperty( "test.user", System.getProperty( 
"user.name" ) );
     }
 
+    public static String getUserPassword()
+    {
+        return "comeonFrance!:-)";
+    }
+
     public static File getPrivateKey()
     {
         return new File( System.getProperty( "sshKeysPath", 
"src/test/ssh-keys" ), "id_rsa" );

Added: 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java?rev=1173726&view=auto
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
 (added)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
 Wed Sep 21 15:41:19 2011
@@ -0,0 +1,65 @@
+package org.apache.maven.wagon.providers.ssh;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.sshd.server.PasswordAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ */
+public class TestPasswordAuthenticator
+    implements PasswordAuthenticator
+{
+    public List<PasswordAuthenticatorRequest> passwordAuthenticatorRequests =
+        new ArrayList<PasswordAuthenticatorRequest>();
+
+    public boolean authenticate( String username, String password, 
ServerSession session )
+    {
+        passwordAuthenticatorRequests.add( new PasswordAuthenticatorRequest( 
username, password ) );
+        return true;
+    }
+
+    public static class PasswordAuthenticatorRequest
+    {
+        public String username;
+
+        public String password;
+
+        public PasswordAuthenticatorRequest( String username, String password )
+        {
+            this.username = username;
+            this.password = password;
+        }
+
+        @Override
+        public String toString()
+        {
+            final StringBuilder sb = new StringBuilder();
+            sb.append( "PasswordAuthenticatorRequest" );
+            sb.append( "{username='" ).append( username ).append( '\'' );
+            sb.append( ", password='" ).append( password ).append( '\'' );
+            sb.append( '}' );
+            return sb.toString();
+        }
+    }
+}

Added: 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java?rev=1173726&view=auto
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
 (added)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
 Wed Sep 21 15:41:19 2011
@@ -0,0 +1,77 @@
+package org.apache.maven.wagon.providers.ssh;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.sshd.server.PublickeyAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
+
+import java.security.PublicKey;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ */
+public class TestPublickeyAuthenticator
+    implements PublickeyAuthenticator
+{
+    public List<PublickeyAuthenticatorRequest> publickeyAuthenticatorRequests =
+        new ArrayList<PublickeyAuthenticatorRequest>();
+
+    public boolean keyAuthz;
+
+    public TestPublickeyAuthenticator( boolean keyAuthz )
+    {
+        this.keyAuthz = keyAuthz;
+    }
+
+    public boolean authenticate( String username, PublicKey key, ServerSession 
session )
+    {
+        if ( !keyAuthz )
+        {
+            return false;
+        }
+        publickeyAuthenticatorRequests.add( new PublickeyAuthenticatorRequest( 
username, key ) );
+        return true;
+    }
+
+    public static class PublickeyAuthenticatorRequest
+    {
+        public String username;
+
+        public PublicKey publicKey;
+
+        public PublickeyAuthenticatorRequest( String username, PublicKey 
publicKey )
+        {
+            this.username = username;
+            this.publicKey = publicKey;
+        }
+
+        @Override
+        public String toString()
+        {
+            final StringBuilder sb = new StringBuilder();
+            sb.append( "PublickeyAuthenticatorRequest" );
+            sb.append( "{username='" ).append( username ).append( '\'' );
+            sb.append( ", publicKey=" ).append( publicKey );
+            sb.append( '}' );
+            return sb.toString();
+        }
+    }
+}

Modified: 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/EmbeddedScpWagonTest.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/EmbeddedScpWagonTest.java?rev=1173726&r1=1173725&r2=1173726&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/EmbeddedScpWagonTest.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/EmbeddedScpWagonTest.java
 Wed Sep 21 15:41:19 2011
@@ -24,6 +24,7 @@ import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.providers.ssh.SshServerEmbedded;
 import org.apache.maven.wagon.providers.ssh.TestData;
+import org.apache.maven.wagon.providers.ssh.TestPasswordAuthenticator;
 import org.apache.maven.wagon.providers.ssh.knownhost.KnownHostsProvider;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
@@ -81,7 +82,7 @@ public class EmbeddedScpWagonTest
 
         String sshKeyResource = "ssh-keys/id_rsa";
 
-        sshServerEmbedded = new SshServerEmbedded( getProtocol(), 
Arrays.asList( sshKeyResource ) );
+        sshServerEmbedded = new SshServerEmbedded( getProtocol(), 
Arrays.asList( sshKeyResource ), false );
 
         sshServerEmbedded.start();
         System.out.println( "sshd on port " + sshServerEmbedded.getPort() );
@@ -91,6 +92,12 @@ public class EmbeddedScpWagonTest
     protected void tearDownWagonTestingFixtures()
         throws Exception
     {
+
+        for ( TestPasswordAuthenticator.PasswordAuthenticatorRequest 
passwordAuthenticatorRequest : 
sshServerEmbedded.passwordAuthenticator.passwordAuthenticatorRequests )
+        {
+            assertEquals( TestData.getUserName(), 
passwordAuthenticatorRequest.username );
+            assertEquals( TestData.getUserPassword(), 
passwordAuthenticatorRequest.password );
+        }
         sshServerEmbedded.stop( true );
     }
 
@@ -116,7 +123,9 @@ public class EmbeddedScpWagonTest
         AuthenticationInfo authInfo = super.getAuthInfo();
 
         authInfo.setUserName( TestData.getUserName() );
+        authInfo.setPassword( TestData.getUserPassword() );
 
+        /*
         File privateKey = TestData.getPrivateKey();
 
         if ( privateKey.exists() )
@@ -124,7 +133,7 @@ public class EmbeddedScpWagonTest
             authInfo.setPrivateKey( privateKey.getAbsolutePath() );
 
             authInfo.setPassphrase( "" );
-        }
+        }*/
 
         return authInfo;
     }


Reply via email to