blob: d6e1fe36563ca63eb72d91da3cbd32e39cd78fe9 [file] [log] [blame]
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.it.Verifier;
import org.apache.maven.it.util.FileUtils;
import org.apache.maven.it.util.ResourceExtractor;
import org.apache.maven.it.util.StringUtils;
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
{
System.out.println( "Got request for URL: '" + request.getRequestURL() + "'" );
System.out.flush();
response.setContentType( "text/plain" );
System.out.println( "Checking for 'Proxy-Connection' header..." );
if ( request.getHeader( "Proxy-Connection" ) != null )
{
response.setStatus( HttpServletResponse.SC_OK );
response.getWriter().println( "some content" );
System.out.println( "Proxy-Connection found." );
}
else
{
response.setStatus( HttpServletResponse.SC_BAD_REQUEST );
System.out.println( "Proxy-Connection 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();
}
public void testmng3599useHttpProxyForHttp()
throws Exception
{
File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3599-useHttpProxyForWebDAV" );
String settings = FileUtils.fileRead( new File( testDir, "settings.xml.template" ) );
settings = StringUtils.replace( settings, "@port@", Integer.toString( port ) );
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" );
cliOptions.add( "-X" );
verifier.setCliOptions( cliOptions );
verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" );
verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "pom" );
verifier.executeGoal( "compile" );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
File logFile = new File( testDir, "log.txt" );
logFile.renameTo( new File( testDir, "logHttp.txt" ) );
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" );
}
/**
* Test that HTTP proxy is used for HTTP and for WebDAV.
*/
public void testmng3599useHttpProxyForWebDAV()
throws Exception
{
// Doesn't work until 2.0.10+
// TODO: reinstate for 2.1 when WebDAV works
if ( matchesVersionRange( "(2.0.9,2.0.99)" ) )
{
File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3599-useHttpProxyForWebDAV" );
String settings = FileUtils.fileRead( new File( testDir, "settings.xml.template" ) );
settings = StringUtils.replace( settings, "@port@", Integer.toString( port ) );
String newSettings = StringUtils.replace( settings, "@protocol@", "dav" );
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" );
cliOptions.add( "-X" );
verifier.setCliOptions( cliOptions );
verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "jar" );
verifier.deleteArtifact( "org.apache.maven.its.mng3599", "test-dependency", "1.0", "pom" );
verifier.executeGoal( "compile" );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
File logFile = new File( testDir, "log.txt" );
logFile.renameTo( new File( testDir, "logDAV.txt" ) );
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 Maven versions < 2.0.10 / 2.1 alpha]" );
}
}
}