Author: bentmann Date: Tue Mar 23 23:48:30 2010 New Revision: 926862 URL: http://svn.apache.org/viewvc?rev=926862&view=rev Log: o Strengthened IT
Modified: maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4428FollowHttpRedirectTest.java Modified: maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4428FollowHttpRedirectTest.java URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4428FollowHttpRedirectTest.java?rev=926862&r1=926861&r2=926862&view=diff ============================================================================== --- maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4428FollowHttpRedirectTest.java (original) +++ maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4428FollowHttpRedirectTest.java Tue Mar 23 23:48:30 2010 @@ -93,9 +93,25 @@ public class MavenITmng4428FollowHttpRed testit( false, true ); } + /** + * Verify that redirects using a relative location URL are getting followed. While a relative URL violates the + * HTTP spec, popular HTTP clients do support them so we better do, too. + */ + public void testitRelativeLocation() + throws Exception + { + testit( true, true ); + } + private void testit( boolean fromHttp, boolean toHttp ) throws Exception { + testit( fromHttp, toHttp, false ); + } + + private void testit( boolean fromHttp, boolean toHttp, boolean relativeLocation ) + throws Exception + { File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4428" ); Verifier verifier = new Verifier( testDir.getAbsolutePath() ); @@ -110,7 +126,7 @@ public class MavenITmng4428FollowHttpRed server.addConnector( newHttpsConnector( storePath, storePwd, keyPwd ) ); Connector from = server.getConnectors()[ fromHttp ? 0 : 1 ]; Connector to = server.getConnectors()[ toHttp ? 0 : 1 ]; - server.setHandler( new RedirectHandler( toHttp ? "http" : "https", to ) ); + server.setHandler( new RedirectHandler( toHttp ? "http" : "https", relativeLocation ? null : to ) ); server.start(); try @@ -173,8 +189,11 @@ public class MavenITmng4428FollowHttpRed String uri = request.getRequestURI(); if ( uri.startsWith( "/repo/" ) ) { - String location = protocol + "://localhost:" + connector.getLocalPort() + "/redirected/" - + uri.substring( 6 ); + String location = "/redirected/" + uri.substring( 6 ); + if ( protocol != null && connector != null ) + { + location = protocol + "://localhost:" + connector.getLocalPort() + location; + } if ( uri.endsWith( ".pom" ) ) { response.setStatus( HttpServletResponse.SC_MOVED_TEMPORARILY );