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.archiva.policies.ReleasesPolicy;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
/**
* RepositoryServlet Tests, Proxied, Get of Release Artifacts, with varying policy settings.
*
*
*/
public class RepositoryServletProxiedReleasePolicyTest
extends AbstractRepositoryServletProxiedTestCase
{
@Test
public void testGetProxiedReleaseArtifactPolicyAlwaysManagedNewer()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.ALWAYS, HAS_MANAGED_COPY,
( NEWER * OVER_ONE_DAY ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyAlwaysManagedOlder()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.ALWAYS, HAS_MANAGED_COPY,
( OLDER * OVER_ONE_DAY ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyAlwaysNoManagedContent()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.ALWAYS, NO_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyDailyFail()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.DAILY, HAS_MANAGED_COPY,
( NEWER * ONE_MINUTE ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyDailyNoManagedContent()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.DAILY, NO_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyDailyPass()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.DAILY, HAS_MANAGED_COPY,
( OLDER * OVER_ONE_DAY ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyRejectFail()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.NEVER, HAS_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyRejectNoManagedContentFail()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_NOT_FOUND, ReleasesPolicy.NEVER, NO_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyRejectPass()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.NEVER, HAS_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyHourlyFail()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.HOURLY, HAS_MANAGED_COPY,
( NEWER * ONE_MINUTE ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyHourlyNoManagedContent()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.HOURLY, NO_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyHourlyPass()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.HOURLY, HAS_MANAGED_COPY,
( OLDER * OVER_ONE_HOUR ) );
}
@Test
public void testGetProxiedReleaseArtifactPolicyOnceFail()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, ReleasesPolicy.ONCE, HAS_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyOnceNoManagedContent()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.ONCE, NO_MANAGED_COPY );
}
@Test
public void testGetProxiedReleaseArtifactPolicyOncePass()
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.ONCE, NO_MANAGED_COPY );
}
private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, String releasePolicy,
boolean hasManagedCopy )
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( expectation, releasePolicy, hasManagedCopy, 0 );
}
private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, String releasePolicy,
boolean hasManagedCopy, long deltaManagedToRemoteTimestamp )
throws Exception
{
// --- Setup
setupCentralRemoteRepo();
setupCleanInternalRepo();
String resourcePath = "org/apache/archiva/test/1.0/test-1.0.jar";
String expectedRemoteContents = "archiva-test-1.0|jar-remote-contents";
String expectedManagedContents = null;
File remoteFile = populateRepo( remoteCentral, resourcePath, expectedRemoteContents );
if ( hasManagedCopy )
{
expectedManagedContents = "archiva-test-1.0|jar-managed-contents";
File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents );
managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp );
}
archivaConfiguration.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>() );
setupReleaseConnector( REPOID_INTERNAL, remoteCentral, releasePolicy );
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 = getServletUnitClient().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.getContentAsString() );
break;
case EXPECT_REMOTE_CONTENTS:
assertResponseOK( response );
assertEquals( "Expected remote file contents", expectedRemoteContents, response.getContentAsString() );
break;
case EXPECT_NOT_FOUND:
assertResponseNotFound( response );
assertManagedFileNotExists( repoRootInternal, resourcePath );
break;
}
}
}