org.apache.archiva.webdav.RepositoryServletNoProxyTest.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.archiva.webdav.RepositoryServletNoProxyTest.java

Source

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;
import javax.servlet.http.HttpServletResponse;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

/**
 * RepositoryServletTest
 */
public class RepositoryServletNoProxyTest extends AbstractRepositoryServletTestCase {

    @Before
    @Override
    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");
        assertResponseNotFound(response);
    }

    @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");
        assertResponseNotFound(response);

    }

    @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");
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    /**
     * [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);
        assertResponseNotFound(response);

    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    /**
     * [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);
        assertResponseNotFound(response);
    }

    @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);
        assertResponseNotFound(response);
    }

    @Test
    public void testGetNoProxySnapshotRedirectToTimestampedSnapshot() throws Exception {
        String commonsLangQuery = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-SNAPSHOT.jar";
        String commonsLangMetadata = "commons-lang/commons-lang/2.1-SNAPSHOT/maven-metadata.xml";
        String commonsLangJar = "commons-lang/commons-lang/2.1-SNAPSHOT/commons-lang-2.1-20050821.023400-1.jar";
        String expectedArtifactContents = "dummy-commons-lang-snapshot-artifact";

        archivaConfiguration.getConfiguration().getWebapp().getUi().setApplicationUrl("http://localhost");

        File artifactFile = new File(repoRootInternal, commonsLangJar);
        artifactFile.getParentFile().mkdirs();
        FileUtils.writeStringToFile(artifactFile, expectedArtifactContents, Charset.defaultCharset());

        File metadataFile = new File(repoRootInternal, commonsLangMetadata);
        metadataFile.getParentFile().mkdirs();
        FileUtils.writeStringToFile(metadataFile, createVersionMetadata("commons-lang", "commons-lang",
                "2.1-SNAPSHOT", "20050821.023400", "1", "20050821.023400"));

        WebRequest webRequest = new GetMethodWebRequest("http://localhost/repository/internal/" + commonsLangQuery);

        MockHttpServletRequest request = new MockHttpServletRequest();
        request.setRequestURI(webRequest.getUrl().getPath());
        request.addHeader("User-Agent", "Apache Archiva unit test");
        request.setMethod(webRequest.getHttpMethod().name());

        final MockHttpServletResponse response = execute(request);

        assertEquals(HttpServletResponse.SC_MOVED_TEMPORARILY, response.getStatus());

        assertEquals("http://localhost/repository/internal/" + commonsLangJar, response.getHeader("Location"));
    }

}