You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2008/07/30 14:12:53 UTC

svn commit: r680995 - in /maven/wagon/trunk/wagon-providers/wagon-ssh: ./ src/test/java/org/apache/maven/wagon/providers/ssh/jsch/

Author: brett
Date: Wed Jul 30 05:12:51 2008
New Revision: 680995

URL: http://svn.apache.org/viewvc?rev=680995&view=rev
Log:
wagon ssh tests using proxy

Added:
    maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java   (with props)
Modified:
    maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml
    maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithSshPrivateKeySearchTest.java

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml?rev=680995&r1=680994&r2=680995&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/pom.xml Wed Jul 30 05:12:51 2008
@@ -53,5 +53,11 @@
       <artifactId>wagon-ssh-common-test</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty</artifactId>
+      <version>6.1.11</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Added: maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java?rev=680995&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java (added)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java Wed Jul 30 05:12:51 2008
@@ -0,0 +1,206 @@
+package org.apache.maven.wagon.providers.ssh.jsch;
+
+/*
+ * 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 java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketTimeoutException;
+import java.util.Random;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+import org.codehaus.plexus.PlexusTestCase;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.AbstractHandler;
+
+public class ScpWagonWithProxyTest
+    extends PlexusTestCase
+{
+    private boolean handled;
+
+    public void testHttpProxy()
+        throws Exception
+    {
+        handled = false;
+        Handler handler = new AbstractHandler()
+        {
+            public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
+                throws IOException, ServletException
+            {
+                assertEquals( "CONNECT", request.getMethod() );
+
+                handled = true;
+                ( (Request) request ).setHandled( true );
+            }
+        };
+
+        Server server = new Server( 0 );
+        server.setHandler( handler );
+        server.start();
+
+        int port = server.getConnectors()[0].getLocalPort();
+        ProxyInfo proxyInfo = new ProxyInfo();
+        proxyInfo.setHost( "localhost" );
+        proxyInfo.setPort( port );
+        proxyInfo.setType( "http" );
+        proxyInfo.setNonProxyHosts( null );
+
+        Wagon wagon = (Wagon) lookup( Wagon.ROLE, "scp" );
+        try
+        {
+            wagon.connect( new Repository( "id", "scp://localhost/tmp" ), proxyInfo );
+            fail();
+        }
+        catch ( AuthenticationException e )
+        {
+            assertTrue( handled );
+        }
+        finally
+        {
+            if ( server != null )
+            {
+                server.stop();
+            }
+        }
+    }
+
+    public void testSocksProxy()
+        throws Exception
+    {
+        handled = false;
+
+        int port = ( Math.abs( new Random().nextInt() ) % 2048 ) + 1024;
+
+        SocksServer s = new SocksServer( port );
+        Thread t = new Thread( s );
+        t.setDaemon( true );
+        t.start();
+
+        ProxyInfo proxyInfo = new ProxyInfo();
+        proxyInfo.setHost( "localhost" );
+        proxyInfo.setPort( port );
+        proxyInfo.setType( "socks_5" );
+        proxyInfo.setNonProxyHosts( null );
+
+        Wagon wagon = (Wagon) lookup( Wagon.ROLE, "scp" );
+        try
+        {
+            wagon.connect( new Repository( "id", "scp://localhost/tmp" ), proxyInfo );
+            fail();
+        }
+        catch ( AuthenticationException e )
+        {
+            assertTrue( handled );
+        }
+        finally
+        {
+            t.interrupt();
+        }
+    }
+
+    private final class SocksServer
+        implements Runnable
+    {
+
+        private final int port;
+
+        private String userAgent;
+
+        private SocksServer( int port )
+        {
+            this.port = port;
+        }
+
+        public void run()
+        {
+            ServerSocket ssock = null;
+            try
+            {
+                try
+                {
+                    ssock = new ServerSocket( port );
+                    ssock.setSoTimeout( 2000 );
+                }
+                catch ( IOException e )
+                {
+                    return;
+                }
+
+                while ( !Thread.currentThread().isInterrupted() )
+                {
+                    Socket sock = null;
+                    try
+                    {
+                        try
+                        {
+                            sock = ssock.accept();
+                        }
+                        catch ( SocketTimeoutException e )
+                        {
+                            continue;
+                        }
+                        
+                        handled = true;
+                    }
+                    catch ( IOException e )
+                    {
+                    }
+                    finally
+                    {
+                        if ( sock != null )
+                        {
+                            try
+                            {
+                                sock.close();
+                            }
+                            catch ( IOException e )
+                            {
+                            }
+                        }
+                    }
+                }
+            }
+            finally
+            {
+                if ( ssock != null )
+                {
+                    try
+                    {
+                        ssock.close();
+                    }
+                    catch ( IOException e )
+                    {
+                    }
+                }
+            }
+        }
+    }
+}

Propchange: maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithProxyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithSshPrivateKeySearchTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithSshPrivateKeySearchTest.java?rev=680995&r1=680994&r2=680995&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithSshPrivateKeySearchTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/test/java/org/apache/maven/wagon/providers/ssh/jsch/ScpWagonWithSshPrivateKeySearchTest.java Wed Jul 30 05:12:51 2008
@@ -20,8 +20,11 @@
  */
 
 import java.io.File;
+import java.io.IOException;
 
+import org.apache.maven.wagon.ConnectionException;
 import org.apache.maven.wagon.StreamingWagonTestCase;
+import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.providers.ssh.TestData;
 import org.apache.maven.wagon.repository.Repository;
@@ -59,4 +62,48 @@
     {
         return new File( repository.getBasedir(), resource.getName() ).lastModified();
     }
+
+    public void testMissingPrivateKey()
+        throws Exception
+    {
+        File file = File.createTempFile( "wagon", "tmp" );
+        file.delete();
+
+        AuthenticationInfo authInfo = new AuthenticationInfo();
+        authInfo.setPrivateKey( file.getAbsolutePath() );
+
+        try
+        {
+            getWagon().connect( new Repository(), authInfo );
+            fail();
+        }
+        catch ( AuthenticationException e )
+        {
+            assertTrue( true );
+        }
+    }
+
+    public void testBadPrivateKey()
+        throws Exception
+    {
+        File file = File.createTempFile( "wagon", "tmp" );
+        file.deleteOnExit();
+
+        AuthenticationInfo authInfo = new AuthenticationInfo();
+        authInfo.setPrivateKey( file.getAbsolutePath() );
+
+        try
+        {
+            getWagon().connect( new Repository(), authInfo );
+            fail();
+        }
+        catch ( AuthenticationException e )
+        {
+            assertTrue( true );
+        }
+        finally
+        {
+            file.delete();
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org