Java tutorial
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")); } }