You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/03/13 22:21:45 UTC

[archiva] 03/04: Adding unit tests for new api methods

This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 20476fff3c75f9afb2b5135c5429e832434c895a
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Fri Mar 13 19:21:03 2020 +0100

    Adding unit tests for new api methods
---
 .../content/ManagedDefaultRepositoryContent.java   |  13 +-
 .../maven/AbstractRepositoryLayerTestCase.java     |   2 +-
 .../ManagedDefaultRepositoryContentTest.java       | 234 ++++++++++++++++++++-
 .../apache/maven/samplejar/1.0/samplejar-1.0.pom   |   2 +-
 .../apache/maven/samplejar/2.0/samplejar-2.0.pom   |   4 +-
 .../org/multilevel/1.0/mulitlevel-1.0.pom          | 161 ++++++++++++++
 .../org/multilevel/1.0/mulitlevel-1.0.pom.md5      |   1 +
 .../org/multilevel/1.0/mulitlevel-1.0.pom.sha256   |   1 +
 .../org/multilevel/test/1.0/test-1.0.pom           | 161 ++++++++++++++
 .../org/multilevel/test/1.0/test-1.0.pom.md5       |   1 +
 .../org/multilevel/test/1.0/test-1.0.pom.sha256    |   1 +
 .../src/test/resources/spring-context.xml          |   2 +-
 12 files changed, 569 insertions(+), 14 deletions(-)

diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index a0611b2..ef4ec97 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -63,6 +63,7 @@ import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -416,7 +417,7 @@ public class ManagedDefaultRepositoryContent
                 Matcher matcher = UNIQUE_SNAPSHOT_PATTERN.matcher( versionPostfix );
                 if (matcher.matches()) {
                     info.version = baseVersion + "-" + matcher.group( 1 );
-                    String newPrefix = prefix + info.version;
+                    String newPrefix = info.id + "-" + info.version;
                     if (fileName.startsWith( newPrefix ))
                     {
                         String classPostfix = StringUtils.removeStart( fileName, newPrefix );
@@ -482,6 +483,12 @@ public class ManagedDefaultRepositoryContent
             info.artifactType = BaseArtifactTypes.METADATA;
         } else if (MavenContentHelper.METADATA_REPOSITORY_FILENAME.equalsIgnoreCase( fileName )) {
             info.artifactType = MavenTypes.REPOSITORY_METADATA;
+        } else if (StringUtils.isNotEmpty( info.remainder ) && StringUtils.countMatches( info.remainder, "." )>=2) {
+            String mainFile = StringUtils.substringBeforeLast( fileName, "." );
+            if (path.getParent().resolve( mainFile ).exists())
+            {
+                info.artifactType = BaseArtifactTypes.RELATED;
+            }
         }
         return info;
 
@@ -691,8 +698,8 @@ public class ManagedDefaultRepositoryContent
                 .map( this::getArtifactFromPath );
         } else if (projectId!=null) {
             final StorageAsset projDir = getAsset( selector.getNamespace( ), projectId );
-            return projDir.list( ).stream( ).filter( StorageAsset::isContainer )
-                .map( StorageAsset::list )
+            return projDir.list( ).stream( )
+                .map(a -> a.isContainer( ) ? a.list( ) : Arrays.asList( a ) )
                 .flatMap( List::stream )
                 .filter( filter )
                 .map( this::getArtifactFromPath );
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
index 028b726..6f3bb45 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
@@ -43,7 +43,7 @@ import java.nio.file.Paths;
  *
  */
 @RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-no-mock-conf.xml" } )
+@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-repository-conf.xml" } )
 public abstract class AbstractRepositoryLayerTestCase
 {
     @Rule
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
index 1ddfc04..a0dbbd2 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
@@ -34,7 +34,6 @@ import org.apache.archiva.repository.content.Artifact;
 import org.apache.archiva.repository.content.BaseArtifactTypes;
 import org.apache.archiva.repository.content.ItemSelector;
 import org.apache.archiva.repository.content.Project;
-import org.apache.archiva.repository.content.Version;
 import org.apache.archiva.repository.content.base.ArchivaItemSelector;
 import org.apache.archiva.repository.maven.MavenManagedRepository;
 import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
@@ -44,7 +43,6 @@ import org.junit.Test;
 
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.jcr.Item;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.nio.file.Files;
@@ -54,7 +52,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -463,9 +460,27 @@ public class ManagedDefaultRepositoryContentTest
             .withNamespace( "javax.sql" )
             .withProjectId( "jdbc" )
             .withVersion( "2.0" ).build();
-        Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector );
-        assertNotNull( stream );
-        List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+        try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
+        {
+            assertNotNull( stream );
+            List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+            checkArtifactListWithVersionSelector1( results );
+        }
+    }
+
+    @Test
+    public void testGetArtifactListWithVersionSelector() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "javax.sql" )
+            .withProjectId( "jdbc" )
+            .withVersion( "2.0" ).build();
+        List<? extends Artifact> results = repoContent.getArtifacts( selector );
+        checkArtifactListWithVersionSelector1( results );
+    }
+
+    private void checkArtifactListWithVersionSelector1( List<? extends Artifact> results )
+    {
+        assertNotNull( results );
         assertEquals( 2, results.size( ) );
         Artifact mainArtifact = results.stream( ).filter( a -> a.getFileName( ).equals( "jdbc-2.0.jar" ) ).findFirst( ).get( );
         assertNotNull( mainArtifact );
@@ -474,4 +489,211 @@ public class ManagedDefaultRepositoryContentTest
         assertNotNull( metaArtifact );
         assertEquals( MavenTypes.REPOSITORY_METADATA, metaArtifact.getArtifactType( ) );
     }
+
+    @Test
+    public void testGetArtifactStreamWithVersionSelector2() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" ).build();
+        try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
+        {
+            assertNotNull( stream );
+            List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+            checkArtifactListWithVersionSelector2( results );
+        }
+    }
+
+    @Test
+    public void testGetArtifactListWithVersionSelector2() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" ).build();
+        List<? extends Artifact> results = repoContent.getArtifacts( selector );
+        checkArtifactListWithVersionSelector2( results );
+    }
+
+    private void checkArtifactListWithVersionSelector2( List<? extends Artifact> results )
+    {
+        assertNotNull( results );
+        assertEquals( 39, results.size( ) );
+
+        Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom" ) )
+            .findFirst( ).get( );
+
+        assertNotNull( artifact );
+        assertEquals( "pom", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+        assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+        assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
+        assertEquals( ".pom", artifact.getRemainder( ) );
+        assertEquals( "axis2", artifact.getId( ) );
+        assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
+        assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
+        assertEquals( "", artifact.getClassifier( ) );
+        assertEquals( "pom", artifact.getType( ) );
+
+        artifact = null;
+        artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom.md5" ) )
+            .findFirst( ).get( );
+
+        assertNotNull( artifact );
+        assertEquals( "md5", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+        assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+        assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
+        assertEquals( ".pom.md5", artifact.getRemainder( ) );
+        assertEquals( "axis2", artifact.getId( ) );
+        assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
+        assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
+        assertEquals( "", artifact.getClassifier( ) );
+        assertEquals( "md5", artifact.getType( ) );
+
+
+        artifact = null;
+        artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "maven-metadata.xml" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
+        assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+        assertEquals( "xml", artifact.getExtension( ) );
+    }
+
+    @Test
+    public void testGetArtifactListWithArtifactSelector1() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" )
+            .withArtifactVersion( "1.3-20070731.113304-21" )
+            .withExtension( "pom" )
+            .build( );
+        List<? extends Artifact> results = repoContent.getArtifacts( selector );
+        checkArtifactListWithArtifactSelector1( results );
+    }
+
+    @Test
+    public void testGetArtifactStreamWithArtifactSelector1() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" )
+            .withArtifactVersion( "1.3-20070731.113304-21" )
+            .withExtension( "pom" )
+            .build( );
+        try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
+        {
+            checkArtifactListWithArtifactSelector1( results.collect( Collectors.toList()) );
+        }
+    }
+
+    private void checkArtifactListWithArtifactSelector1( List<? extends Artifact> results )
+    {
+        assertNotNull( results );
+        assertEquals( 1, results.size( ) );
+        Artifact artifact = results.get( 0 );
+        assertEquals( "pom", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+    }
+
+    @Test
+    public void testGetArtifactListWithArtifactSelector2() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" )
+            .withArtifactVersion( "1.3-20070731.113304-21" )
+            .withExtension( "pom" )
+            .includeRelatedArtifacts()
+            .build( );
+        List<? extends Artifact> results = repoContent.getArtifacts( selector );
+
+        checkArtifactListWithArtifactSelector2( results );
+
+    }
+
+    @Test
+    public void testGetArtifactStreamWithArtifactSelector2() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.axis2" )
+            .withProjectId( "axis2" )
+            .withVersion( "1.3-SNAPSHOT" )
+            .withArtifactVersion( "1.3-20070731.113304-21" )
+            .withExtension( "pom" )
+            .includeRelatedArtifacts()
+            .build( );
+        try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
+        {
+            checkArtifactListWithArtifactSelector2( results.collect( Collectors.toList()) );
+        }
+    }
+
+    private void checkArtifactListWithArtifactSelector2( List<? extends Artifact> results )
+    {
+        assertNotNull( results );
+        assertEquals( 3, results.size( ) );
+        Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( "pom", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+
+        artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom.sha1" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( "sha1", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+    }
+
+
+    @Test
+    public void testArtifactListWithProjectSelector1() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.maven.shared" )
+            .withProjectId( "maven-downloader" )
+            .build( );
+        List<? extends Artifact> results = repoContent.getArtifacts( selector );
+        checkArtifactListWithProjectSelector1( results );
+
+    }
+
+    @Test
+    public void testArtifactStreamWithProjectSelector1() {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withNamespace( "org.apache.maven.shared" )
+            .withProjectId( "maven-downloader" )
+            .build( );
+        Stream<? extends Artifact> results = repoContent.newArtifactStream( selector );
+        checkArtifactListWithProjectSelector1( results.collect( Collectors.toList()) );
+
+    }
+
+    private void checkArtifactListWithProjectSelector1( List<? extends Artifact> results )
+    {
+        assertNotNull( results );
+        assertEquals( 27, results.size( ) );
+
+        Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-metadata.xml" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( "xml", artifact.getExtension( ) );
+        assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
+
+        artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+        assertEquals( "sources", artifact.getClassifier( ) );
+        assertEquals( "java-source", artifact.getType( ) );
+
+        artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar.sha1" ) )
+            .findFirst( ).get( );
+        assertNotNull( artifact );
+        assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+        assertEquals( "sources", artifact.getClassifier( ) );
+        assertEquals( "sha1", artifact.getType( ) );
+        assertEquals( ".jar.sha1", artifact.getRemainder( ) );
+    }
+
 }
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
index 6ab57d1..fd18076 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
@@ -21,7 +21,7 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
-  <artifactId>C</artifactId>
+  <artifactId>samplejar</artifactId>
   <version>1.0</version>
   <name>Maven Test Repository Artifact Discovery</name>
   <!-- default packaging is jar -->
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
index a959980..284c3da 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
@@ -21,8 +21,8 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
-  <artifactId>C</artifactId>
-  <version>1.0</version>
+  <artifactId>samplejar</artifactId>
+  <version>2.0</version>
   <name>Maven Test Repository Artifact Discovery</name>
   <!-- specified packaging -->
   <packaging>jar</packaging>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom
new file mode 100644
index 0000000..ecc1a93
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org</groupId>
+    <artifactId>multilevel</artifactId>
+    <name>Multilevel Test</name>
+    <version>1.0</version>
+    <packaging>pom</packaging>
+
+    <organization>
+        <name>Company</name>
+        <url>http://www.company.com/</url>
+    </organization>
+    <inceptionYear>2002</inceptionYear>
+
+    <modules>
+        <module>api</module>
+        <module>common</module>
+        <module>broker</module>
+        <module>endpoint</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <!-- common version strategy -->
+            <dependency>
+                <groupId>javax.activation</groupId>
+                <artifactId>activation</artifactId>
+                <version>1.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.jms</groupId>
+                <artifactId>jms</artifactId>
+                <version>1.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.ejb</groupId>
+                <artifactId>ejb</artifactId>
+                <version>2.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>servlet-api</artifactId>
+                <version>2.4</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.mail</groupId>
+                <artifactId>mail</artifactId>
+                <version>1.4</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>xml-apis</groupId>
+                <artifactId>xml-apis</artifactId>
+                <version>2.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>commons-logging</groupId>
+                <artifactId>commons-logging</artifactId>
+                <version>1.0.4</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>2.1</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-collections</groupId>
+                <artifactId>commons-collections</artifactId>
+                <version>3.2</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring</artifactId>
+                <version>2.0.7</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-mock</artifactId>
+                <version>2.0.7</version>
+                <scope>test</scope>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-jdbc</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-web</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>log4j</groupId>
+                <artifactId>log4j</artifactId>
+                <version>1.2.8</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-discovery</groupId>
+                <artifactId>commons-discovery</artifactId>
+                <version>0.2</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-id</groupId>
+                <artifactId>commons-id</artifactId>
+                <version>0.1-dev</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.castor</groupId>
+                <artifactId>castor</artifactId>
+                <version>1.0.5-xml</version>
+            </dependency>
+            <dependency>
+                <groupId>xerces</groupId>
+                <artifactId>xerces</artifactId>
+                <version>2.4.0</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-httpclient</groupId>
+                <artifactId>commons-httpclient</artifactId>
+                <version>3.1</version>
+            </dependency>
+            <dependency>
+                <groupId>stax</groupId>
+                <artifactId>stax-api</artifactId>
+                <version>1.0.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.woodstox</groupId>
+                <artifactId>wstx-asl</artifactId>
+                <version>3.2.1</version>
+            </dependency>
+            <dependency>
+                <groupId>com.thoughtworks.xstream</groupId>
+                <artifactId>xstream</artifactId>
+                <version>1.2.2</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.management</groupId>
+                <artifactId>jmxri</artifactId>
+                <version>1.2.1</version>
+                <scope>provided</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5
new file mode 100644
index 0000000..5a2e507
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5
@@ -0,0 +1 @@
+f47d2f7fe7abf0939aca96197ca21a13  mulitlevel-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256
new file mode 100644
index 0000000..902140c
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256
@@ -0,0 +1 @@
+de1d43c63ea17a7aad03c6edc8477a8e196ad406a6c7e18c23db057f9e030a13  mulitlevel-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom
new file mode 100644
index 0000000..7349873
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.multilevel</groupId>
+    <artifactId>test</artifactId>
+    <name>Multilevel Test Sub 1</name>
+    <version>1.0</version>
+    <packaging>pom</packaging>
+
+    <organization>
+        <name>Company</name>
+        <url>http://www.company.com/</url>
+    </organization>
+    <inceptionYear>2002</inceptionYear>
+
+    <modules>
+        <module>api</module>
+        <module>common</module>
+        <module>broker</module>
+        <module>endpoint</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <!-- common version strategy -->
+            <dependency>
+                <groupId>javax.activation</groupId>
+                <artifactId>activation</artifactId>
+                <version>1.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.jms</groupId>
+                <artifactId>jms</artifactId>
+                <version>1.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.ejb</groupId>
+                <artifactId>ejb</artifactId>
+                <version>2.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>servlet-api</artifactId>
+                <version>2.4</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.mail</groupId>
+                <artifactId>mail</artifactId>
+                <version>1.4</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>xml-apis</groupId>
+                <artifactId>xml-apis</artifactId>
+                <version>2.0.2</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>commons-logging</groupId>
+                <artifactId>commons-logging</artifactId>
+                <version>1.0.4</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>2.1</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-collections</groupId>
+                <artifactId>commons-collections</artifactId>
+                <version>3.2</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring</artifactId>
+                <version>2.0.7</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-mock</artifactId>
+                <version>2.0.7</version>
+                <scope>test</scope>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-jdbc</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-web</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>log4j</groupId>
+                <artifactId>log4j</artifactId>
+                <version>1.2.8</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-discovery</groupId>
+                <artifactId>commons-discovery</artifactId>
+                <version>0.2</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-id</groupId>
+                <artifactId>commons-id</artifactId>
+                <version>0.1-dev</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.castor</groupId>
+                <artifactId>castor</artifactId>
+                <version>1.0.5-xml</version>
+            </dependency>
+            <dependency>
+                <groupId>xerces</groupId>
+                <artifactId>xerces</artifactId>
+                <version>2.4.0</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-httpclient</groupId>
+                <artifactId>commons-httpclient</artifactId>
+                <version>3.1</version>
+            </dependency>
+            <dependency>
+                <groupId>stax</groupId>
+                <artifactId>stax-api</artifactId>
+                <version>1.0.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.woodstox</groupId>
+                <artifactId>wstx-asl</artifactId>
+                <version>3.2.1</version>
+            </dependency>
+            <dependency>
+                <groupId>com.thoughtworks.xstream</groupId>
+                <artifactId>xstream</artifactId>
+                <version>1.2.2</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.management</groupId>
+                <artifactId>jmxri</artifactId>
+                <version>1.2.1</version>
+                <scope>provided</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5
new file mode 100644
index 0000000..4af4123
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5
@@ -0,0 +1 @@
+ef3e226769f6e4ef6ba17a39d1ae7832  test-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256
new file mode 100644
index 0000000..fef1c3f
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256
@@ -0,0 +1 @@
+340253fb0649f043044a96857c5a6ec4b74992e25d58071b46de1ef99f046cf0  test-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
index 872f498..0278de4 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
@@ -28,7 +28,7 @@
        default-lazy-init="true">
 
   <context:annotation-config/>
-  <context:component-scan base-package="org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.index.mock"/>
+  <context:component-scan base-package="org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.maven.mock"/>
 
 
   <bean name="archivaConfiguration#test" class="org.apache.archiva.configuration.DefaultArchivaConfiguration">