diff --git a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3599useHttpProxyForWebDAV.java b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3599useHttpProxyForWebDAV.java new file mode 100644 index 0000000000..6eb7375ff1 --- /dev/null +++ b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3599useHttpProxyForWebDAV.java @@ -0,0 +1,118 @@ +package org.apache.maven.integrationtests; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.it.Verifier; +import org.apache.maven.it.util.FileUtils; +import org.apache.maven.it.util.StringUtils; +import org.apache.maven.it.util.ResourceExtractor; +import org.mortbay.jetty.Handler; +import org.mortbay.jetty.Request; +import org.mortbay.jetty.Server; +import org.mortbay.jetty.handler.AbstractHandler; + +public class MavenITmng3599useHttpProxyForWebDAV + extends AbstractMavenIntegrationTestCase +{ + private Server server; + + private int port; + + public void setUp() + throws Exception + { + Handler handler = new AbstractHandler() + { + public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch ) + throws IOException, ServletException + { + response.setContentType( "text/plain" ); + + if ( request.getHeader( "Proxy-Connection" ) != null ) + { + response.setStatus( HttpServletResponse.SC_OK ); + response.getWriter().println( "some content" ); + } + else + { + response.setStatus( HttpServletResponse.SC_NOT_FOUND ); + } + + ( (Request) request ).setHandled( true ); + } + }; + + server = new Server( 0 ); + server.setHandler( handler ); + server.start(); + + port = server.getConnectors()[0].getLocalPort(); + } + + protected void tearDown() + throws Exception + { + super.tearDown(); + + server.stop(); + } + + /** + * Test that HTTP proxy is used for HTTP and for WebDAV. + */ + public void testmng3599useHttpProxyForWebDAV() + throws Exception + { + // TODO: create settings file + + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3599-useHttpProxyForWebDAV" ); + String settings = FileUtils.fileRead( new File( testDir, "settings.xml.template" ) ); + settings = StringUtils.replace( settings, "@port@", Integer.valueOf( port ).toString() ); + String newSettings = StringUtils.replace( settings, "@protocol@", "http" ); + FileUtils.fileWrite( new File( testDir, "settings.xml" ).getAbsolutePath(), newSettings ); + + Verifier verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + cliOptions.add( "--settings" ); + cliOptions.add( "settings.xml" ); + verifier.setCliOptions( cliOptions ); + + verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" ); + verifier.executeGoal( "compile" ); + verifier.verifyErrorFreeLog(); + verifier.resetStreams(); + + verifier.assertArtifactPresent( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" ); + verifier.assertArtifactContents( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar", "some content\n" ); + + // Doesn't work until 2.0.10+ + // TODO: reinstate for 2.1 when WebDAV works + if ( matchesVersionRange( "(2.0.9,2.1-ALPHA-1-SNAPSHOT)" ) ) + { + newSettings = StringUtils.replace( settings, "@protocol@", "dav" ); + FileUtils.fileWrite( new File( testDir, "settings.xml" ).getAbsolutePath(), newSettings ); + + verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" ); + verifier.executeGoal( "compile" ); + verifier.verifyErrorFreeLog(); + verifier.resetStreams(); + + verifier.assertArtifactPresent( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" ); + verifier.assertArtifactContents( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar", "some content\n" ); + } + else + { + System.out.print( " [skipping DAV test for < 2.0.10 / 2.1 alpha]" ); + } + } +} + diff --git a/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/pom.xml b/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/pom.xml new file mode 100644 index 0000000000..53fa52ff01 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + org.apache.maven.its.mng3599 + test + 1.0-SNAPSHOT + + + ${project.groupId} + test-dependency + 1.0 + + + + + + org.apache.maven.wagon + wagon-webdav-jackrabbit + 1.0-beta-3 + + + + + diff --git a/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/settings.xml.template b/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/settings.xml.template new file mode 100644 index 0000000000..0652b2ca91 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-3599-useHttpProxyForWebDAV/settings.xml.template @@ -0,0 +1,18 @@ + + + + test-mirror + @protocol@://www.example.com/ + * + + + + + http-proxy + http + localhost + @port@ + + + +