From 6612822c2c5190d838ea6b4b2f140dc0e0dab4b0 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 26 Oct 2007 00:59:48 +0000 Subject: [PATCH] [MRM-567] Unable to download plugin SNAPSHOT's from proxy. Adding unit tests for Timestamped Snapshot GET from RepositoryServlet (with proxies). Adding unit tests for Timestamped Plugin Snapshot GET from RepositoryServlet (with proxies). git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@588460 13f79535-47bb-0310-9956-ffa450edef68 --- ...ervletProxiedPluginSnapshotPolicyTest.java | 195 ++++++++++++++++++ ...tProxiedTimestampedSnapshotPolicyTest.java | 195 ++++++++++++++++++ 2 files changed, 390 insertions(+) create mode 100644 archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedPluginSnapshotPolicyTest.java create mode 100644 archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java diff --git a/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedPluginSnapshotPolicyTest.java b/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedPluginSnapshotPolicyTest.java new file mode 100644 index 000000000..456f09945 --- /dev/null +++ b/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedPluginSnapshotPolicyTest.java @@ -0,0 +1,195 @@ +package org.apache.maven.archiva.web.repository; + +/* + * 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.meterware.httpunit.GetMethodWebRequest; +import com.meterware.httpunit.HttpUnitOptions; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +import org.apache.maven.archiva.policies.SnapshotsPolicy; + +import java.io.File; + +/** + * RepositoryServlet Tests, Proxied, Get of Timestamped Snapshot Artifacts, with varying policy settings. + * + * @author Joakim Erdfelt + * @version $Id$ + */ +public class RepositoryServletProxiedPluginSnapshotPolicyTest + extends AbstractRepositoryServletProxiedTestCase +{ + public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedNewer() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.IGNORED, + HAS_MANAGED_COPY, ( NEWER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedOlder() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.IGNORED, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyAlwaysNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.IGNORED, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY, + ( NEWER * ONE_MINUTE ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DISABLED, + HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledNoManagedContentFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_NOT_FOUND, SnapshotsPolicy.DISABLED, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DISABLED, + HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY, + ( NEWER * ONE_MINUTE ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_HOUR ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOnceFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.ONCE, HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOnceNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOncePass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY ); + } + + private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy, + boolean hasManagedCopy ) + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 ); + } + + private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy, + boolean hasManagedCopy, long deltaManagedToRemoteTimestamp ) + throws Exception + { + // --- Setup + setupSnapshotsRemoteRepo(); + setupCleanInternalRepo(); + + String resourcePath = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-1-SNAPSHOT/archivatest-maven-plugin-4.0-alpha-1-20070822.033400-42.jar"; + String expectedRemoteContents = "archivatest-maven-plugin-4.0-alpha-1-20070822.033400-42|jar-remote-contents"; + String expectedManagedContents = null; + File remoteFile = populateRepo( remoteSnapshots, resourcePath, expectedRemoteContents ); + + if ( hasManagedCopy ) + { + expectedManagedContents = "archivatest-maven-plugin-4.0-alpha-1-20070822.033400-42|jar-managed-contents"; + File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents ); + managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp ); + } + + setupSnapshotConnector( REPOID_INTERNAL, remoteSnapshots, snapshotsPolicy ); + saveConfiguration(); + + // --- Execution + // process the response code later, not via an exception. + HttpUnitOptions.setExceptionsThrownOnErrorStatus( false ); + + WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + resourcePath ); + WebResponse response = sc.getResponse( request ); + + // --- Verification + + switch ( expectation ) + { + case EXPECT_MANAGED_CONTENTS: + assertResponseOK( response ); + assertTrue( "Invalid Test Case: Can't expect managed contents with " + + "test that doesn't have a managed copy in the first place.", hasManagedCopy ); + assertEquals( "Expected managed file contents", expectedManagedContents, response.getText() ); + break; + case EXPECT_REMOTE_CONTENTS: + assertResponseOK( response ); + assertEquals( "Expected remote file contents", expectedRemoteContents, response.getText() ); + break; + case EXPECT_NOT_FOUND: + assertResponseNotFound( response ); + assertManagedFileNotExists( repoRootInternal, resourcePath ); + break; + } + } +} diff --git a/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java b/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java new file mode 100644 index 000000000..fb4f8edc1 --- /dev/null +++ b/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java @@ -0,0 +1,195 @@ +package org.apache.maven.archiva.web.repository; + +/* + * 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.meterware.httpunit.GetMethodWebRequest; +import com.meterware.httpunit.HttpUnitOptions; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +import org.apache.maven.archiva.policies.SnapshotsPolicy; + +import java.io.File; + +/** + * RepositoryServlet Tests, Proxied, Get of Timestamped Snapshot Artifacts, with varying policy settings. + * + * @author Joakim Erdfelt + * @version $Id$ + */ +public class RepositoryServletProxiedTimestampedSnapshotPolicyTest + extends AbstractRepositoryServletProxiedTestCase +{ + public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedNewer() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.IGNORED, + HAS_MANAGED_COPY, ( NEWER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedOlder() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.IGNORED, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyAlwaysNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.IGNORED, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY, + ( NEWER * ONE_MINUTE ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDailyPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_DAY ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DISABLED, + HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledNoManagedContentFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_NOT_FOUND, SnapshotsPolicy.DISABLED, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyDisabledPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DISABLED, + HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY, + ( NEWER * ONE_MINUTE ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyHourlyPass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY, + ( OLDER * OVER_ONE_HOUR ) ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOnceFail() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.ONCE, HAS_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOnceNoManagedContent() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY ); + } + + public void testGetProxiedSnapshotsArtifactPolicyOncePass() + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY ); + } + + private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy, + boolean hasManagedCopy ) + throws Exception + { + assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 ); + } + + private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy, + boolean hasManagedCopy, long deltaManagedToRemoteTimestamp ) + throws Exception + { + // --- Setup + setupSnapshotsRemoteRepo(); + setupCleanInternalRepo(); + + String resourcePath = "org/apache/archiva/test/3.0-SNAPSHOT/test-3.0-20070822.033400-42.jar"; + String expectedRemoteContents = "archiva-test-3.0-20070822.033400-42|jar-remote-contents"; + String expectedManagedContents = null; + File remoteFile = populateRepo( remoteSnapshots, resourcePath, expectedRemoteContents ); + + if ( hasManagedCopy ) + { + expectedManagedContents = "archiva-test-3.0-20070822.033400-42|jar-managed-contents"; + File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents ); + managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp ); + } + + setupSnapshotConnector( REPOID_INTERNAL, remoteSnapshots, snapshotsPolicy ); + saveConfiguration(); + + // --- Execution + // process the response code later, not via an exception. + HttpUnitOptions.setExceptionsThrownOnErrorStatus( false ); + + WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + resourcePath ); + WebResponse response = sc.getResponse( request ); + + // --- Verification + + switch ( expectation ) + { + case EXPECT_MANAGED_CONTENTS: + assertResponseOK( response ); + assertTrue( "Invalid Test Case: Can't expect managed contents with " + + "test that doesn't have a managed copy in the first place.", hasManagedCopy ); + assertEquals( "Expected managed file contents", expectedManagedContents, response.getText() ); + break; + case EXPECT_REMOTE_CONTENTS: + assertResponseOK( response ); + assertEquals( "Expected remote file contents", expectedRemoteContents, response.getText() ); + break; + case EXPECT_NOT_FOUND: + assertResponseNotFound( response ); + assertManagedFileNotExists( repoRootInternal, resourcePath ); + break; + } + } +} -- 2.39.5