mirror of https://github.com/apache/archiva.git
[MRM-577] Metadata aren't generated by archiva.
Adding unit tests to replicate conditions around maven-metadata.xml requests presented in Jira ticket. Not able to reproduce bug (yet). git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@590808 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0561ccc53d
commit
3e55adbce6
|
@ -192,12 +192,6 @@
|
|||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-xwork-integration</artifactId>
|
||||
</dependency>
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-utils</artifactId>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>org.apache.derby</groupId>
|
||||
<artifactId>derby</artifactId>
|
||||
|
@ -226,6 +220,10 @@
|
|||
<version>1.6.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xmlunit</groupId>
|
||||
<artifactId>xmlunit</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus.redback</groupId>
|
||||
<artifactId>redback-keys-memory</artifactId>
|
||||
|
|
|
@ -0,0 +1,226 @@
|
|||
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.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.custommonkey.xmlunit.DetailedDiff;
|
||||
import org.custommonkey.xmlunit.Diff;
|
||||
|
||||
/**
|
||||
* Abstract TestCase for RepositoryServlet Tests, Proxied, Get of Metadata.
|
||||
*
|
||||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
|
||||
* @version $Id$
|
||||
*/
|
||||
public abstract class AbstractRepositoryServletProxiedMetadataTestCase
|
||||
extends AbstractRepositoryServletProxiedTestCase
|
||||
{
|
||||
protected RemoteRepoInfo remotePrivateSnapshots;
|
||||
|
||||
protected void assertExpectedMetadata( String expectedMetadata, String actualMetadata )
|
||||
throws Exception
|
||||
{
|
||||
DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) );
|
||||
if ( !detailedDiff.similar() )
|
||||
{
|
||||
// If it isn't similar, dump the difference.
|
||||
assertEquals( expectedMetadata, actualMetadata );
|
||||
}
|
||||
// XMLAssert.assertXMLEqual( "Expected Metadata:", expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
protected String requestMetadataOK( String path )
|
||||
throws Exception
|
||||
{
|
||||
// process the response code later, not via an exception.
|
||||
HttpUnitOptions.setExceptionsThrownOnErrorStatus( false );
|
||||
|
||||
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + path );
|
||||
WebResponse response = sc.getResponse( request );
|
||||
assertResponseOK( response );
|
||||
return response.getText();
|
||||
}
|
||||
|
||||
protected String createVersionMetadata( String groupId, String artifactId, String version )
|
||||
{
|
||||
return createVersionMetadata( groupId, artifactId, version, null, null, null );
|
||||
}
|
||||
|
||||
protected String createVersionMetadata( String groupId, String artifactId, String version, String timestamp,
|
||||
String buildNumber, String lastUpdated )
|
||||
{
|
||||
StringBuffer buf = new StringBuffer();
|
||||
|
||||
buf.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n" );
|
||||
buf.append( "<metadata>\n" );
|
||||
buf.append( " <groupId>" ).append( groupId ).append( "</groupId>\n" );
|
||||
buf.append( " <artifactId>" ).append( artifactId ).append( "</artifactId>\n" );
|
||||
buf.append( " <version>" ).append( version ).append( "</version>\n" );
|
||||
|
||||
boolean hasSnapshot = StringUtils.isNotBlank( timestamp ) || StringUtils.isNotBlank( buildNumber );
|
||||
boolean hasLastUpdated = StringUtils.isNotBlank( lastUpdated );
|
||||
|
||||
if ( hasSnapshot || hasLastUpdated )
|
||||
{
|
||||
buf.append( " <versioning>\n" );
|
||||
if ( hasSnapshot )
|
||||
{
|
||||
buf.append( " <snapshot>\n" );
|
||||
buf.append( " <buildNumber>" ).append( buildNumber ).append( "</buildNumber>\n" );
|
||||
buf.append( " <timestamp>" ).append( timestamp ).append( "</timestamp>\n" );
|
||||
buf.append( " </snapshot>\n" );
|
||||
}
|
||||
if ( hasLastUpdated )
|
||||
{
|
||||
buf.append( " <lastUpdated>" ).append( lastUpdated ).append( "</lastUpdated>\n" );
|
||||
}
|
||||
buf.append( " </versioning>\n" );
|
||||
}
|
||||
buf.append( "</metadata>" );
|
||||
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
protected String createProjectMetadata( String groupId, String artifactId, String latest, String release,
|
||||
String[] versions )
|
||||
{
|
||||
StringBuffer buf = new StringBuffer();
|
||||
|
||||
buf.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n" );
|
||||
buf.append( "<metadata>\n" );
|
||||
buf.append( " <groupId>" ).append( groupId ).append( "</groupId>\n" );
|
||||
buf.append( " <artifactId>" ).append( artifactId ).append( "</artifactId>\n" );
|
||||
|
||||
boolean hasLatest = StringUtils.isNotBlank( latest );
|
||||
boolean hasRelease = StringUtils.isNotBlank( release );
|
||||
boolean hasVersions = !ArrayUtils.isEmpty( versions );
|
||||
|
||||
if ( hasLatest || hasRelease || hasVersions )
|
||||
{
|
||||
buf.append( " <versioning>\n" );
|
||||
if ( hasLatest )
|
||||
{
|
||||
buf.append( " <latest>" ).append( latest ).append( "</latest>\n" );
|
||||
}
|
||||
if ( hasRelease )
|
||||
{
|
||||
buf.append( " <release>" ).append( release ).append( "</release>\n" );
|
||||
}
|
||||
if ( hasVersions )
|
||||
{
|
||||
buf.append( " <versions>\n" );
|
||||
for ( String availVersion : versions )
|
||||
{
|
||||
buf.append( " <version>" ).append( availVersion ).append( "</version>\n" );
|
||||
}
|
||||
buf.append( " </versions>\n" );
|
||||
}
|
||||
buf.append( " </versioning>\n" );
|
||||
}
|
||||
buf.append( "</metadata>" );
|
||||
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
protected void setupPrivateSnapshotsRemoteRepo()
|
||||
throws Exception
|
||||
{
|
||||
remotePrivateSnapshots = createServer( "private-snapshots" );
|
||||
|
||||
assertServerSetupCorrectly( remotePrivateSnapshots );
|
||||
archivaConfiguration.getConfiguration().addRemoteRepository( remotePrivateSnapshots.config );
|
||||
setupCleanRepo( remotePrivateSnapshots.root );
|
||||
}
|
||||
|
||||
// private void assertGetProxiedSnapshotMetadata( int expectation, boolean hasManagedCopy,
|
||||
// long deltaManagedToRemoteTimestamp )
|
||||
// throws Exception
|
||||
// {
|
||||
// // --- Setup
|
||||
// setupSnapshotsRemoteRepo();
|
||||
// setupCleanInternalRepo();
|
||||
//
|
||||
// String resourcePath = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-1-SNAPSHOT/maven-metadata.xml";
|
||||
// String expectedRemoteContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<metadata>\n"
|
||||
// + " <groupId>org.apache.maven.plugins</groupId>\n" + " <artifactId>maven-assembly-plugin</artifactId>\n"
|
||||
// + " <version>2.2-beta-2-SNAPSHOT</version>\n" + " <versioning>\n" + " <snapshot>\n"
|
||||
// + " <timestamp>20071017.162810</timestamp>\n" + " <buildNumber>20</buildNumber>\n"
|
||||
// + " </snapshot>\n" + " <lastUpdated>20071017162814</lastUpdated>\n" + " </versioning>\n"
|
||||
// + "</metadata>";
|
||||
// String expectedManagedContents = null;
|
||||
// File remoteFile = populateRepo( remoteSnapshots, resourcePath, expectedRemoteContents );
|
||||
//
|
||||
// if ( hasManagedCopy )
|
||||
// {
|
||||
// expectedManagedContents = "<metadata>\n" + " <groupId>org.apache.maven.plugins</groupId>\n"
|
||||
// + " <artifactId>maven-assembly-plugin</artifactId>\n" + " <version>2.2-beta-2-SNAPSHOT</version>\n"
|
||||
// + "</metadata>";
|
||||
//
|
||||
// File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents );
|
||||
// managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp );
|
||||
// }
|
||||
//
|
||||
// setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
// 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 );
|
||||
// String actualContents = response.getText();
|
||||
// XMLAssert.assertXMLEqual( expectedManagedContents, actualContents );
|
||||
// // 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;
|
||||
// }
|
||||
// }
|
||||
|
||||
protected void tearDown()
|
||||
throws Exception
|
||||
{
|
||||
shutdownServer( remotePrivateSnapshots );
|
||||
|
||||
super.tearDown();
|
||||
}
|
||||
}
|
|
@ -93,6 +93,8 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
|
||||
protected RemoteRepoInfo remoteSnapshots;
|
||||
|
||||
protected RemoteRepoInfo remotePrivateSnapshots;
|
||||
|
||||
@Override
|
||||
protected void setUp()
|
||||
throws Exception
|
||||
|
@ -100,58 +102,57 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
super.setUp();
|
||||
}
|
||||
|
||||
public RemoteRepoInfo createSnapshotsRepo()
|
||||
protected RemoteRepoInfo createServer( String id )
|
||||
throws Exception
|
||||
{
|
||||
RemoteRepoInfo snapshots = new RemoteRepoInfo();
|
||||
snapshots.id = "snapshots";
|
||||
snapshots.context = "/snapshots";
|
||||
snapshots.root = getTestFile( "target/remote-repos/snapshots/" );
|
||||
RemoteRepoInfo repo = new RemoteRepoInfo();
|
||||
repo.id = id;
|
||||
repo.context = "/" + id;
|
||||
repo.root = getTestFile( "target/remote-repos/" + id + "/" );
|
||||
|
||||
// Remove exising root contents.
|
||||
if ( snapshots.root.exists() )
|
||||
if ( repo.root.exists() )
|
||||
{
|
||||
FileUtils.deleteDirectory( snapshots.root );
|
||||
FileUtils.deleteDirectory( repo.root );
|
||||
}
|
||||
|
||||
// Establish root directory.
|
||||
if ( !snapshots.root.exists() )
|
||||
if ( !repo.root.exists() )
|
||||
{
|
||||
snapshots.root.mkdirs();
|
||||
repo.root.mkdirs();
|
||||
}
|
||||
|
||||
snapshots.server = new Server();
|
||||
repo.server = new Server();
|
||||
ContextHandlerCollection contexts = new ContextHandlerCollection();
|
||||
snapshots.server.setHandler( contexts );
|
||||
repo.server.setHandler( contexts );
|
||||
|
||||
SocketConnector connector = new SocketConnector();
|
||||
connector.setPort( 0 ); // 0 means, choose and empty port. (we'll find out which, later)
|
||||
|
||||
snapshots.server.setConnectors( new Connector[] { connector } );
|
||||
repo.server.setConnectors( new Connector[] { connector } );
|
||||
|
||||
ContextHandler context = new ContextHandler();
|
||||
context.setContextPath( snapshots.context );
|
||||
context.setContextPath( repo.context );
|
||||
context.setResourceBase( repo.root.getAbsolutePath() );
|
||||
context.setAttribute( "dirAllowed", true );
|
||||
context.setAttribute( "maxCacheSize", 0 );
|
||||
context.setResourceBase( snapshots.root.getAbsolutePath() );
|
||||
ServletHandler servlet = new ServletHandler();
|
||||
servlet.addServletWithMapping( DefaultServlet.class.getName(), "/" );
|
||||
context.setHandler( servlet );
|
||||
contexts.addHandler( context );
|
||||
|
||||
snapshots.server.start();
|
||||
repo.server.start();
|
||||
|
||||
int port = connector.getLocalPort();
|
||||
snapshots.url = "http://localhost:" + port + snapshots.context;
|
||||
System.out.println( "Snapshot HTTP Server started on " + snapshots.url );
|
||||
repo.url = "http://localhost:" + port + repo.context;
|
||||
System.out.println( "Remote HTTP Server started on " + repo.url );
|
||||
|
||||
snapshots.config = createRemoteRepository( snapshots.id, "Testable [" + snapshots.id + "] Remote Repo",
|
||||
snapshots.url );
|
||||
repo.config = createRemoteRepository( repo.id, "Testable [" + repo.id + "] Remote Repo", repo.url );
|
||||
|
||||
return snapshots;
|
||||
return repo;
|
||||
}
|
||||
|
||||
private void assertServerSetupCorrectly( RemoteRepoInfo remoteRepo )
|
||||
protected void assertServerSetupCorrectly( RemoteRepoInfo remoteRepo )
|
||||
throws Exception
|
||||
{
|
||||
WebConversation wc = new WebConversation();
|
||||
|
@ -159,56 +160,6 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
assertResponseOK( response );
|
||||
}
|
||||
|
||||
private RemoteRepoInfo createCentralRepo()
|
||||
throws Exception
|
||||
{
|
||||
RemoteRepoInfo central = new RemoteRepoInfo();
|
||||
central.id = "central";
|
||||
central.context = "/central";
|
||||
central.root = getTestFile( "target/remote-repos/central/" );
|
||||
|
||||
// Remove exising root contents.
|
||||
if ( central.root.exists() )
|
||||
{
|
||||
FileUtils.deleteDirectory( central.root );
|
||||
}
|
||||
|
||||
// Establish root directory.
|
||||
if ( !central.root.exists() )
|
||||
{
|
||||
central.root.mkdirs();
|
||||
}
|
||||
|
||||
central.server = new Server();
|
||||
ContextHandlerCollection contexts = new ContextHandlerCollection();
|
||||
central.server.setHandler( contexts );
|
||||
|
||||
SocketConnector connector = new SocketConnector();
|
||||
connector.setPort( 0 ); // 0 means, choose and empty port. (we'll find out which, later)
|
||||
|
||||
central.server.setConnectors( new Connector[] { connector } );
|
||||
|
||||
ContextHandler context = new ContextHandler();
|
||||
context.setContextPath( central.context );
|
||||
context.setResourceBase( central.root.getAbsolutePath() );
|
||||
context.setAttribute( "dirAllowed", true );
|
||||
context.setAttribute( "maxCacheSize", 0 );
|
||||
ServletHandler servlet = new ServletHandler();
|
||||
servlet.addServletWithMapping( DefaultServlet.class.getName(), "/" );
|
||||
context.setHandler( servlet );
|
||||
contexts.addHandler( context );
|
||||
|
||||
central.server.start();
|
||||
|
||||
int port = connector.getLocalPort();
|
||||
central.url = "http://localhost:" + port + central.context;
|
||||
System.out.println( "Central HTTP Server started on " + central.url );
|
||||
|
||||
central.config = createRemoteRepository( central.id, "Testable [" + central.id + "] Remote Repo", central.url );
|
||||
|
||||
return central;
|
||||
}
|
||||
|
||||
private void setupConnector( String repoId, RemoteRepoInfo remoteRepo, String releasesPolicy, String snapshotsPolicy )
|
||||
{
|
||||
ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
|
||||
|
@ -222,7 +173,7 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
archivaConfiguration.getConfiguration().addProxyConnector( connector );
|
||||
}
|
||||
|
||||
private void shutdownServer( RemoteRepoInfo remoteRepo )
|
||||
protected void shutdownServer( RemoteRepoInfo remoteRepo )
|
||||
{
|
||||
if ( remoteRepo != null )
|
||||
{
|
||||
|
@ -258,7 +209,7 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
protected void setupCentralRemoteRepo()
|
||||
throws Exception
|
||||
{
|
||||
remoteCentral = createCentralRepo();
|
||||
remoteCentral = createServer( "central" );
|
||||
|
||||
assertServerSetupCorrectly( remoteCentral );
|
||||
archivaConfiguration.getConfiguration().addRemoteRepository( remoteCentral.config );
|
||||
|
@ -283,7 +234,7 @@ public abstract class AbstractRepositoryServletProxiedTestCase
|
|||
protected void setupSnapshotsRemoteRepo()
|
||||
throws Exception
|
||||
{
|
||||
remoteSnapshots = createSnapshotsRepo();
|
||||
remoteSnapshots = createServer( "snapshots" );
|
||||
|
||||
assertServerSetupCorrectly( remoteSnapshots );
|
||||
archivaConfiguration.getConfiguration().addRemoteRepository( remoteSnapshots.config );
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
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.WebRequest;
|
||||
import com.meterware.httpunit.WebResponse;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* RepositoryServletTest
|
||||
*
|
||||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class RepositoryServletNoProxyMetadataTest
|
||||
extends AbstractRepositoryServletTestCase
|
||||
{
|
||||
public void testGetVersionMetadataDefaultLayout()
|
||||
throws Exception
|
||||
{
|
||||
String commonsLangMetadata = "commons-lang/commons-lang/2.1/maven-metadata.xml";
|
||||
String expectedMetadataContents = "metadata-for-commons-lang-version-2.1";
|
||||
|
||||
File checksumFile = new File( repoRootInternal, commonsLangMetadata );
|
||||
checksumFile.getParentFile().mkdirs();
|
||||
|
||||
FileUtils.writeStringToFile( checksumFile, expectedMetadataContents, null );
|
||||
|
||||
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangMetadata );
|
||||
WebResponse response = sc.getResponse( request );
|
||||
assertResponseOK( response );
|
||||
|
||||
assertEquals( "Expected file contents", expectedMetadataContents, response.getText() );
|
||||
}
|
||||
|
||||
public void testGetProjectMetadataDefaultLayout()
|
||||
throws Exception
|
||||
{
|
||||
String commonsLangMetadata = "commons-lang/commons-lang/maven-metadata.xml";
|
||||
String expectedMetadataContents = "metadata-for-commons-lang-version-for-project";
|
||||
|
||||
File checksumFile = new File( repoRootInternal, commonsLangMetadata );
|
||||
checksumFile.getParentFile().mkdirs();
|
||||
|
||||
FileUtils.writeStringToFile( checksumFile, expectedMetadataContents, null );
|
||||
|
||||
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + commonsLangMetadata );
|
||||
WebResponse response = sc.getResponse( request );
|
||||
assertResponseOK( response );
|
||||
|
||||
assertEquals( "Expected file contents", expectedMetadataContents, response.getText() );
|
||||
}
|
||||
|
||||
public void testGetSnapshotVersionMetadataDefaultLayout()
|
||||
throws Exception
|
||||
{
|
||||
String assemblyPluginMetadata = "org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-2-SNAPSHOT/maven-metadata.xml";
|
||||
String expectedMetadataContents = "metadata-for-assembly-plugin-version-2.2-beta-2-SNAPSHOT";
|
||||
|
||||
File checksumFile = new File( repoRootInternal, assemblyPluginMetadata );
|
||||
checksumFile.getParentFile().mkdirs();
|
||||
|
||||
FileUtils.writeStringToFile( checksumFile, expectedMetadataContents, null );
|
||||
|
||||
WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + assemblyPluginMetadata );
|
||||
WebResponse response = sc.getResponse( request );
|
||||
assertResponseOK( response );
|
||||
|
||||
assertEquals( "Expected file contents", expectedMetadataContents, response.getText() );
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* RepositoryServlet Tests, Proxied, Get of Metadata, exists on local managed repository only.
|
||||
*
|
||||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class RepositoryServletProxiedMetadataLocalOnlyTest
|
||||
extends AbstractRepositoryServletProxiedMetadataTestCase
|
||||
{
|
||||
public void testGetProxiedSnapshotVersionMetadataLocalOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-1-SNAPSHOT/maven-metadata.xml";
|
||||
String expectedMetadata = createVersionMetadata( "org.apache.archiva", "archivatest-maven-plugin",
|
||||
"4.0-alpha-1-SNAPSHOT" );
|
||||
|
||||
populateRepo( repoRootInternal, path, expectedMetadata );
|
||||
|
||||
setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
setupConnector( REPOID_INTERNAL, remotePrivateSnapshots );
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
public void testGetProxiedVersionMetadataLocalOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-2/maven-metadata.xml";
|
||||
String expectedMetadata = createVersionMetadata( "org.apache.archiva", "archivatest-maven-plugin",
|
||||
"4.0-alpha-2" );
|
||||
|
||||
populateRepo( repoRootInternal, path, expectedMetadata );
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
public void testGetProxiedProjectMetadataLocalOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/maven-metadata.xml";
|
||||
String version = "1.0-alpha-4";
|
||||
String release = "1.0-alpha-4";
|
||||
String expectedMetadata = createProjectMetadata( "org.apache.archiva", "archivatest-maven-plugin", version,
|
||||
release, new String[] { "1.0-alpha-4" } );
|
||||
|
||||
populateRepo( repoRootInternal, path, expectedMetadata );
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
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 java.io.File;
|
||||
|
||||
/**
|
||||
* RepositoryServlet Tests, Proxied, Get of Metadata, exists on remote repository only.
|
||||
*
|
||||
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
|
||||
* @version $Id$
|
||||
*/
|
||||
public class RepositoryServletProxiedMetadataRemoteOnlyTest
|
||||
extends AbstractRepositoryServletProxiedMetadataTestCase
|
||||
{
|
||||
public void testGetProxiedSnapshotVersionMetadataRemoteOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-1-SNAPSHOT/maven-metadata.xml";
|
||||
String version = "4.0-alpha-1-SNAPSHOT";
|
||||
String timestamp = "20040305.112233";
|
||||
String buildNumber = "2";
|
||||
String lastUpdated = "20040305112233";
|
||||
String expectedMetadata = createVersionMetadata( "org.apache.archiva", "archivatest-maven-plugin",
|
||||
version, timestamp, buildNumber, lastUpdated);
|
||||
|
||||
File metadataFile = populateRepo( remoteSnapshots, path, expectedMetadata );
|
||||
|
||||
setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
setupConnector( REPOID_INTERNAL, remotePrivateSnapshots );
|
||||
saveConfiguration();
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
public void testGetProxiedPluginSnapshotVersionMetadataRemoteOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-2-SNAPSHOT/maven-metadata.xml";
|
||||
String version = "2.2-beta-2-SNAPSHOT";
|
||||
String timestamp = "20071017.162810";
|
||||
String buildNumber = "20";
|
||||
String lastUpdated = "20071017162810";
|
||||
String expectedMetadata = createVersionMetadata( "org.apache.maven.plugins", "maven-assembly-plugin", version,
|
||||
timestamp, buildNumber, lastUpdated );
|
||||
|
||||
File metadataFile = populateRepo( remoteSnapshots, path, expectedMetadata );
|
||||
|
||||
setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
setupConnector( REPOID_INTERNAL, remotePrivateSnapshots );
|
||||
saveConfiguration();
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
public void testGetProxiedVersionMetadataRemoteOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-2/maven-metadata.xml";
|
||||
String expectedMetadata = createVersionMetadata( "org.apache.archiva", "archivatest-maven-plugin",
|
||||
"4.0-alpha-2" );
|
||||
|
||||
File managedFile = populateRepo( remoteSnapshots, path, expectedMetadata );
|
||||
|
||||
setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
setupConnector( REPOID_INTERNAL, remotePrivateSnapshots );
|
||||
saveConfiguration();
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
|
||||
public void testGetProxiedProjectMetadataRemoteOnly()
|
||||
throws Exception
|
||||
{
|
||||
// --- Setup
|
||||
setupSnapshotsRemoteRepo();
|
||||
setupPrivateSnapshotsRemoteRepo();
|
||||
setupCleanInternalRepo();
|
||||
|
||||
String path = "org/apache/archiva/archivatest-maven-plugin/maven-metadata.xml";
|
||||
String latest = "1.0-alpha-4";
|
||||
String release = "1.0-alpha-4";
|
||||
String expectedMetadata = createProjectMetadata( "org.apache.archiva", "archivatest-maven-plugin",
|
||||
latest, release, new String[] { "1.0-alpha-4" } );
|
||||
|
||||
File managedFile = populateRepo( remoteSnapshots, path, expectedMetadata );
|
||||
|
||||
setupConnector( REPOID_INTERNAL, remoteSnapshots );
|
||||
setupConnector( REPOID_INTERNAL, remotePrivateSnapshots );
|
||||
saveConfiguration();
|
||||
|
||||
// --- Execution
|
||||
String actualMetadata = requestMetadataOK( path );
|
||||
|
||||
// --- Verification
|
||||
assertExpectedMetadata( expectedMetadata, actualMetadata );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue