[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:
Joakim Erdfelt 2007-10-31 20:20:02 +00:00
parent 0561ccc53d
commit 3e55adbce6
6 changed files with 588 additions and 80 deletions

View File

@ -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>

View File

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

View File

@ -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 );

View File

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

View File

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

View File

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