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@
+
+
+
+