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;
}