blob: 121b4e1709c330bc06df55af1f467e50d904d7ef [file] [log] [blame]
package org.apache.archiva.webdav;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.nio.charset.Charset;
import java.util.ArrayList;
/**
* RepositoryServletTest
*
*
*/
public class RepositoryServletNoProxyTest
extends AbstractRepositoryServletTestCase
{
@Before
public void setUp()
throws Exception
{
super.setUp();
archivaConfiguration.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>() );
startRepository();
}
@Test
public void testLastModifiedHeaderExists()
throws Exception
{
String commonsLangSha1 = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1";
File checksumFile = new File( repoRootInternal, commonsLangSha1 );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, "dummy-checksum", Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangSha1 );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangSha1 );
assertNotNull( response.getResponseHeaderValue( "Last-Modified" ) );
}
@Test
public void testGetNoProxyChecksumDefaultLayout()
throws Exception
{
String commonsLangSha1 = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1";
File checksumFile = new File( repoRootInternal, commonsLangSha1 );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, "dummy-checksum", Charset.defaultCharset() );
//WebRequest request = new WebRequest( "http://machine.com/repository/internal/" + commonsLangSha1 );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangSha1 );
assertResponseOK( response );
assertEquals( "Expected file contents", "dummy-checksum", response.getContentAsString() );
}
@Test
public void testGetNoProxyChecksumLegacyLayout()
throws Exception
{
String commonsLangSha1 = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1";
File checksumFile = new File( repoRootInternal, commonsLangSha1 );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, "dummy-checksum", Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest(
// "http://machine.com/repository/internal/" + "commons-lang/jars/commons-lang-2.1.jar.sha1" );
WebResponse response = getWebResponse( "/repository/internal/" + "commons-lang/jars/commons-lang-2.1.jar.sha1" );
assertResponseOK( response );
assertEquals( "Expected file contents", "dummy-checksum", response.getContentAsString() );
}
@Test
public void testGetNoProxyVersionedMetadataDefaultLayout()
throws Exception
{
String commonsLangMetadata = "commons-lang/commons-lang/2.1/maven-metadata.xml";
String expectedMetadataContents = "dummy-versioned-metadata";
File metadataFile = new File( repoRootInternal, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangMetadata );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangMetadata );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyProjectMetadataDefaultLayout()
throws Exception
{
String commonsLangMetadata = "commons-lang/commons-lang/maven-metadata.xml";
String expectedMetadataContents = "dummy-project-metadata";
File metadataFile = new File( repoRootInternal, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangMetadata );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangMetadata );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyGroupMetadataDefaultLayout()
throws Exception
{
String commonsLangMetadata = "commons-lang/maven-metadata.xml";
String expectedMetadataContents = "dummy-group-metadata";
File metadataFile = new File( repoRootInternal, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangMetadata );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangMetadata );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyArtifactDefaultLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangJar );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangJar );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyArtifactLegacyLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest(
// "http://machine.com/repository/internal/" + "commons-lang/jars/commons-lang-2.1.jar" );
WebResponse response = getWebResponse( "/repository/internal/" + "commons-lang/jars/commons-lang-2.1.jar" );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxySnapshotArtifactDefaultLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-SNAPSHOT.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangJar );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangJar );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxySnapshotArtifactLegacyLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-SNAPSHOT.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest(
// "http://machine.com/repository/internal/" + "commons-lang/jars/commons-lang-2.1-SNAPSHOT.jar" );
WebResponse response = getWebResponse( "/repository/internal/commons-lang/jars/commons-lang-2.1-SNAPSHOT.jar" );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyTimestampedSnapshotArtifactDefaultLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-20050821.023400-1.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
//WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangJar );
WebResponse response = getWebResponse( "/repository/internal/" + commonsLangJar );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyTimestampedSnapshotArtifactLegacyLayout()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-20050821.023400-1.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootInternal, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest(
"http://machine.com/repository/internal/" + "commons-lang/jars/commons-lang-2.1-20050821.023400-1.jar" );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
/**
* [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
*/
@Test
public void testGetNoProxyDualExtensionDefaultLayout()
throws Exception
{
String expectedContents = "the-contents-of-the-dual-extension";
String dualExtensionPath = "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip";
File checksumFile = new File( repoRootInternal, dualExtensionPath );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, expectedContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + dualExtensionPath );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyDistributionLegacyLayout()
throws Exception
{
String expectedContents = "the-contents-of-the-dual-extension";
String dualExtensionPath = "org/project/example-presentation/3.2/example-presentation-3.2.zip";
File checksumFile = new File( repoRootInternal, dualExtensionPath );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, expectedContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest(
"http://machine.com/repository/internal/" + "org.project/distributions/example-presentation-3.2.zip" );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyChecksumDefaultLayoutManagedLegacy()
throws Exception
{
String commonsLangSha1 = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1";
File checksumFile = new File( repoRootLegacy, "commons-lang/jars/commons-lang-2.1.jar.sha1" );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, "dummy-checksum", Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangSha1 );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", "dummy-checksum", response.getContentAsString() );
}
@Test
public void testGetNoProxyChecksumLegacyLayoutManagedLegacy()
throws Exception
{
String commonsLangSha1 = "commons-lang/jars/commons-lang-2.1.jar.sha1";
File checksumFile = new File( repoRootLegacy, commonsLangSha1 );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, "dummy-checksum", Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangSha1 );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", "dummy-checksum", response.getContentAsString() );
}
@Test
public void testGetNoProxyVersionedMetadataDefaultLayoutManagedLegacy()
throws Exception
{
String commonsLangMetadata = "commons-lang/commons-lang/2.1/maven-metadata.xml";
String expectedMetadataContents = "dummy-versioned-metadata";
// TODO: find out what this should be from maven-artifact
File metadataFile = new File( repoRootLegacy, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangMetadata );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyProjectMetadataDefaultLayoutManagedLegacy()
throws Exception
{
// TODO: find out what it is meant to be from maven-artifact
String commonsLangMetadata = "commons-lang/commons-lang/maven-metadata.xml";
String expectedMetadataContents = "dummy-project-metadata";
File metadataFile = new File( repoRootLegacy, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangMetadata );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyGroupMetadataDefaultLayoutManagedLegacy()
throws Exception
{
String commonsLangMetadata = "commons-lang/maven-metadata.xml";
String expectedMetadataContents = "dummy-group-metadata";
File metadataFile = new File( repoRootLegacy, commonsLangMetadata );
metadataFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( metadataFile, expectedMetadataContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangMetadata );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedMetadataContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyArtifactDefaultLayoutManagedLegacy()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
File artifactFile = new File( repoRootLegacy, "commons-lang/jars/commons-lang-2.1.jar" );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyArtifactLegacyLayoutManagedLegacy()
throws Exception
{
String commonsLangJar = "commons-lang/jars/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
File artifactFile = new File( repoRootLegacy, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxySnapshotArtifactDefaultLayoutManagedLegacy()
throws Exception
{
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-SNAPSHOT.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootLegacy, "commons-lang/jars/commons-lang-2.1-SNAPSHOT.jar" );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxySnapshotArtifactLegacyLayoutManagedLegacy()
throws Exception
{
String commonsLangJar = "commons-lang/jars/commons-lang-2.1-SNAPSHOT.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootLegacy, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyTimestampedSnapshotArtifactDefaultLayoutManagedLegacy()
throws Exception
{
String filename = "commons-lang-2.1-20050821.023400-1.jar";
String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/" + filename;
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootLegacy, "commons-lang/jars/" + filename );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyTimestampedSnapshotArtifactLegacyLayoutManagedLegacy()
throws Exception
{
String commonsLangJar = "commons-lang/jars/commons-lang-2.1-20050821.023400-1.jar";
String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";
File artifactFile = new File( repoRootLegacy, commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + commonsLangJar );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedArtifactContents, response.getContentAsString() );
}
/**
* [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
*/
@Test
public void testGetNoProxyDualExtensionDefaultLayoutManagedLegacy()
throws Exception
{
String expectedContents = "the-contents-of-the-dual-extension";
String dualExtensionPath = "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip";
File checksumFile = new File( repoRootLegacy, "org.project/distributions/example-presentation-3.2.xml.zip" );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, expectedContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + dualExtensionPath );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedContents, response.getContentAsString() );
}
@Test
public void testGetNoProxyDistributionLegacyLayoutManagedLegacy()
throws Exception
{
String expectedContents = "the-contents-of-the-dual-extension";
String dualExtensionPath = "org.project/distributions/example-presentation-3.2.zip";
File checksumFile = new File( repoRootLegacy, dualExtensionPath );
checksumFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( checksumFile, expectedContents, Charset.defaultCharset() );
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/legacy/" + dualExtensionPath );
WebResponse response = getServletUnitClient().getResponse( request );
assertResponseOK( response );
assertEquals( "Expected file contents", expectedContents, response.getContentAsString() );
}
}