You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/09/20 00:52:18 UTC
svn commit: r1172877 - in /maven/wagon/trunk: ./
wagon-provider-test/src/main/java/org/apache/maven/wagon/http/
wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/
wagon-providers/wagon-http/ wagon-providers/wago...
Author: olamy
Date: Mon Sep 19 22:52:18 2011
New Revision: 1172877
URL: http://svn.apache.org/viewvc?rev=1172877&view=rev
Log:
[WAGON-347] Support preemtive authentication : add unit for that
Modified:
maven/wagon/trunk/pom.xml
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonWithPreemptiveAuthenticationTest.java
maven/wagon/trunk/wagon-providers/wagon-http/pom.xml
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
Modified: maven/wagon/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/pom.xml?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/pom.xml (original)
+++ maven/wagon/trunk/pom.xml Mon Sep 19 22:52:18 2011
@@ -316,6 +316,16 @@ under the License.
<stagingSiteURL>scp://people.apache.org/www/maven.apache.org/wagon-${project.version}</stagingSiteURL>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.9</version>
+ <configuration>
+ <systemPropertyVariables>
+ <java.io.tmpdir>${project.build.outputDirectory}</java.io.tmpdir>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
</plugins>
</pluginManagement>
<plugins>
@@ -340,11 +350,7 @@ under the License.
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.9</version>
- </plugin>
+
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
Modified: maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java (original)
+++ maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java Mon Sep 19 22:52:18 2011
@@ -36,6 +36,7 @@ import org.codehaus.plexus.util.StringOu
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.HttpConnection;
import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Response;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.AbstractHandler;
import org.mortbay.jetty.handler.HandlerCollection;
@@ -57,9 +58,11 @@ import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.URLDecoder;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.zip.GZIPOutputStream;
@@ -662,25 +665,6 @@ public abstract class HttpWagonTestCase
return server;
}
- protected SecurityHandler createSecurityHandler()
- {
- Constraint constraint = new Constraint();
- constraint.setName( Constraint.__BASIC_AUTH );
- constraint.setRoles( new String[]{ "admin" } );
- constraint.setAuthenticate( true );
-
- ConstraintMapping cm = new ConstraintMapping();
- cm.setConstraint( constraint );
- cm.setPathSpec( "/*" );
-
- SecurityHandler sh = new SecurityHandler();
- HashUserRealm hashUserRealm = new HashUserRealm( "MyRealm" );
- hashUserRealm.put( "user", "secret" );
- hashUserRealm.addUserToRole( "user", "admin" );
- sh.setUserRealm( hashUserRealm );
- sh.setConstraintMappings( new ConstraintMapping[]{ cm } );
- return sh;
- }
private String writeTestFileGzip( File parent, String child )
throws IOException
@@ -836,52 +820,81 @@ public abstract class HttpWagonTestCase
public void runTestSecuredPut( AuthenticationInfo authInfo )
throws Exception
{
+ runTestSecuredPut( authInfo, 1 );
+ }
+
+ public void runTestSecuredPut( AuthenticationInfo authInfo, int putNumber )
+ throws Exception
+ {
String localRepositoryPath = FileTestUtils.getTestOutputDir().toString();
Server server = new Server( 0 );
- SecurityHandler sh = createSecurityHandler();
+ TestSecurityHandler sh = createSecurityHandler();
- PutHandler handler = new PutHandler( new File( localRepositoryPath ) );
+ PutHandler putHandler = new PutHandler( new File( localRepositoryPath ) );
HandlerCollection handlers = new HandlerCollection();
- handlers.setHandlers( new Handler[]{ sh, handler } );
+ handlers.setHandlers( new Handler[]{ sh, putHandler } );
server.setHandler( handlers );
addConnectors( server );
server.start();
+ StreamingWagon wagon = (StreamingWagon) getWagon();
+ Repository testRepository = new Repository( "id", getRepositoryUrl( server ) );
+ wagon.connect( testRepository, authInfo );
try
{
- StreamingWagon wagon = (StreamingWagon) getWagon();
-
- Repository testRepository = new Repository( "id", getRepositoryUrl( server ) );
-
- wagon.connect( testRepository, authInfo );
-
- File sourceFile = new File( localRepositoryPath, "test-secured-put-resource" );
- sourceFile.delete();
- assertFalse( sourceFile.exists() );
-
- File tempFile = File.createTempFile( "wagon", "tmp" );
- tempFile.deleteOnExit();
- FileUtils.fileWrite( tempFile.getAbsolutePath(), "put top secret" );
-
- try
- {
- wagon.put( tempFile, "test-secured-put-resource" );
- }
- finally
+ for ( int i = 0; i < putNumber; i++ )
{
- wagon.disconnect();
- tempFile.delete();
- }
+ File sourceFile = new File( localRepositoryPath, "test-secured-put-resource" );
+ sourceFile.delete();
+ assertFalse( sourceFile.exists() );
+
+ File tempFile = File.createTempFile( "wagon", "tmp" );
+ tempFile.deleteOnExit();
+ FileUtils.fileWrite( tempFile.getAbsolutePath(), "put top secret" );
+
+ try
+ {
+ wagon.put( tempFile, "test-secured-put-resource" );
+ }
+ finally
+ {
+ tempFile.delete();
+ }
- assertEquals( "put top secret", FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+ assertEquals( "put top secret", FileUtils.fileRead( sourceFile.getAbsolutePath() ) );
+ }
}
finally
{
+ wagon.disconnect();
server.stop();
}
+ assertEquals( putNumber, putHandler.putCallNumber );
+ testPreemptiveAuthentication( sh );
+ }
+
+ protected abstract boolean supportPreemptiveAuthentication();
+
+ protected void testPreemptiveAuthentication( TestSecurityHandler sh )
+ {
+
+ if ( supportPreemptiveAuthentication() )
+ {
+ assertEquals( "not 1 security handler use " + sh.securityHandlerRequestReponses, 1,
+ sh.securityHandlerRequestReponses.size() );
+ assertEquals( 200, sh.securityHandlerRequestReponses.get( 0 ).responseCode );
+ }
+ else
+ {
+ assertEquals( "not 2 security handler use " + sh.securityHandlerRequestReponses, 2,
+ sh.securityHandlerRequestReponses.size() );
+ assertEquals( 401, sh.securityHandlerRequestReponses.get( 0 ).responseCode );
+ assertEquals( 200, sh.securityHandlerRequestReponses.get( 1 ).responseCode );
+
+ }
}
static class StatusHandler
@@ -910,6 +923,8 @@ public abstract class HttpWagonTestCase
{
private final File resourceBase;
+ public int putCallNumber = 0;
+
public PutHandler( File repositoryDirectory )
{
this.resourceBase = repositoryDirectory;
@@ -941,7 +956,8 @@ public abstract class HttpWagonTestCase
in.close();
out.close();
}
-
+ System.out.println( "put file " + request.getPathInfo() );
+ putCallNumber++;
response.setStatus( HttpServletResponse.SC_CREATED );
}
}
@@ -993,4 +1009,69 @@ public abstract class HttpWagonTestCase
}
}
+
+ protected TestSecurityHandler createSecurityHandler()
+ {
+ Constraint constraint = new Constraint();
+ constraint.setName( Constraint.__BASIC_AUTH );
+ constraint.setRoles( new String[]{ "admin" } );
+ constraint.setAuthenticate( true );
+
+ ConstraintMapping cm = new ConstraintMapping();
+ cm.setConstraint( constraint );
+ cm.setPathSpec( "/*" );
+
+ TestSecurityHandler sh = new TestSecurityHandler();
+ HashUserRealm hashUserRealm = new HashUserRealm( "MyRealm" );
+ hashUserRealm.put( "user", "secret" );
+ hashUserRealm.addUserToRole( "user", "admin" );
+ sh.setUserRealm( hashUserRealm );
+ sh.setConstraintMappings( new ConstraintMapping[]{ cm } );
+ return sh;
+ }
+
+ public static class TestSecurityHandler
+ extends SecurityHandler
+ {
+
+ public List<SecurityHandlerRequestReponse> securityHandlerRequestReponses =
+ new ArrayList<SecurityHandlerRequestReponse>();
+
+ @Override
+ public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
+ throws IOException, ServletException
+ {
+ String method = request.getMethod();
+ super.handle( target, request, response, dispatch );
+ System.out.println( "method in SecurityHandler: " + method );
+
+ securityHandlerRequestReponses.add(
+ new SecurityHandlerRequestReponse( method, ( (Response) response ).getStatus() ) );
+ }
+
+ }
+
+ public static class SecurityHandlerRequestReponse
+ {
+ public String method;
+
+ public int responseCode;
+
+ private SecurityHandlerRequestReponse( String method, int responseCode )
+ {
+ this.method = method;
+ this.responseCode = responseCode;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "SecurityHandlerRequestReponse" );
+ sb.append( "{method='" ).append( method ).append( '\'' );
+ sb.append( ", responseCode=" ).append( responseCode );
+ sb.append( '}' );
+ return sb.toString();
+ }
+ }
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java Mon Sep 19 22:52:18 2011
@@ -50,4 +50,9 @@ public class LightweightHttpWagonTest
( (LightweightHttpWagon) wagon ).setHttpHeaders( properties );
}
+ @Override
+ protected boolean supportPreemptiveAuthentication()
+ {
+ return false;
+ }
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonWithPreemptiveAuthenticationTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonWithPreemptiveAuthenticationTest.java?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonWithPreemptiveAuthenticationTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonWithPreemptiveAuthenticationTest.java Mon Sep 19 22:52:18 2011
@@ -29,9 +29,17 @@ public class LightweightHttpWagonWithPre
extends LightweightHttpWagonTest
{
@Override
- protected Wagon getWagon() throws Exception {
+ protected Wagon getWagon()
+ throws Exception
+ {
LightweightHttpWagon wagon = (LightweightHttpWagon) super.getWagon();
wagon.setPreemptiveAuthentication( true );
return wagon;
}
+
+ @Override
+ protected boolean supportPreemptiveAuthentication()
+ {
+ return true;
+ }
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/pom.xml?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/pom.xml Mon Sep 19 22:52:18 2011
@@ -33,11 +33,6 @@ under the License.
Wagon that gets and puts artifacts through http using Apache httpclient-4.x.
</description>
- <properties>
- <!-- http pooled connection -->
- <http.pool>true</http.pool>
- </properties>
-
<dependencies>
<dependency>
@@ -109,15 +104,6 @@ under the License.
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <maven.wagon.http.pool>${http.pool}</maven.wagon.http.pool>
- </systemPropertyVariables>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java Mon Sep 19 22:52:18 2011
@@ -62,4 +62,10 @@ public class HttpWagonTest
assertTrue( wagon.getConnectionManager() instanceof ThreadSafeClientConnManager );
}
+
+ @Override
+ protected boolean supportPreemptiveAuthentication()
+ {
+ return true;
+ }
}
Modified: maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java?rev=1172877&r1=1172876&r2=1172877&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java Mon Sep 19 22:52:18 2011
@@ -45,4 +45,5 @@ public class HttpsWagonTest
connector.setTrustPassword( "wagonhttp" );
server.setConnectors( new Connector[] { connector } );
}
+
}