]> source.dussan.org Git - archiva.git/blob
ad52ab31caeeb8217c30f038b5b597b05ff84484
[archiva.git] /
1 package org.apache.archiva.metadata.repository.storage.maven2;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.admin.model.beans.ManagedRepository;
23 import org.apache.archiva.common.utils.VersionComparator;
24 import org.apache.archiva.model.ArtifactReference;
25 import org.apache.archiva.model.ProjectReference;
26 import org.apache.archiva.model.VersionedReference;
27 import org.apache.archiva.repository.ManagedRepositoryContent;
28 import org.apache.archiva.repository.layout.LayoutException;
29 import org.junit.Before;
30 import org.junit.Test;
31
32 import javax.inject.Inject;
33 import javax.inject.Named;
34 import java.io.File;
35 import java.util.ArrayList;
36 import java.util.Collections;
37 import java.util.List;
38 import java.util.Set;
39
40 import static org.junit.Assert.*;
41
42 /**
43  * ManagedLegacyRepositoryContentTest
44  *
45  *
46  */
47 public class ManagedLegacyRepositoryContentTest
48     extends AbstractLegacyRepositoryContentTestCase
49 {
50     @Inject
51     @Named( "managedRepositoryContent#legacy" )
52     private ManagedRepositoryContent repoContent;
53
54     @Before
55     public void setUp()
56         throws Exception
57     {
58         File repoDir = new File( "src/test/repositories/legacy-repository" );
59
60         ManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir );
61         repository.setLayout( "legacy" );
62
63         //repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "legacy" );
64         repoContent.setRepository( repository );
65     }
66
67     @Test
68     public void testGetVersionsFromProjectReference()
69         throws Exception
70     {
71         assertVersions( "org.apache.maven", "testing", new String[]{ "UNKNOWN",
72 //            "1.0-javadoc",
73 //            "1.0-sources",
74             "1.0", "1.0-20050611.112233-1" } );
75     }
76
77     @Test
78     public void testGetVersionsFromVersionedReference()
79         throws Exception
80     {
81         assertVersions( "org.apache.maven", "testing", "1.0", new String[]{
82 //            "1.0-javadoc",
83 //            "1.0-sources",
84             "1.0", "1.0-20050611.112233-1" } );
85     }
86
87     private void assertVersions( String groupId, String artifactId, String[] expectedVersions )
88         throws Exception
89     {
90         ProjectReference reference = new ProjectReference();
91         reference.setGroupId( groupId );
92         reference.setArtifactId( artifactId );
93
94         // Request the versions.
95         Set<String> testedVersionSet = repoContent.getVersions( reference );
96
97         // Sort the list (for asserts later)
98         List<String> testedVersions = new ArrayList<>();
99         testedVersions.addAll( testedVersionSet );
100         Collections.sort( testedVersions, new VersionComparator() );
101
102         // Test the expected array of versions, to the actual tested versions
103         assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );
104
105         for ( int i = 0; i < expectedVersions.length; i++ )
106         {
107             String actualVersion = testedVersions.get( i );
108             assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
109         }
110     }
111
112     private void assertVersions( String groupId, String artifactId, String version, String[] expectedVersions )
113         throws Exception
114     {
115         VersionedReference reference = new VersionedReference();
116         reference.setGroupId( groupId );
117         reference.setArtifactId( artifactId );
118         reference.setVersion( version );
119
120         // Request the versions.
121         Set<String> testedVersionSet = repoContent.getVersions( reference );
122
123         // Sort the list (for asserts later)
124         List<String> testedVersions = new ArrayList<>();
125         testedVersions.addAll( testedVersionSet );
126         Collections.sort( testedVersions, new VersionComparator() );
127
128         // Test the expected array of versions, to the actual tested versions
129         assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );
130
131         for ( int i = 0; i < expectedVersions.length; i++ )
132         {
133             String actualVersion = testedVersions.get( i );
134             assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
135         }
136     }
137
138     @Test
139     public void testGetRelatedArtifacts()
140         throws Exception
141     {
142         ArtifactReference reference = createArtifact( "org.apache.maven", "testing", "1.0", null, "jar" );
143
144         Set<ArtifactReference> related = repoContent.getRelatedArtifacts( reference );
145         assertNotNull( related );
146
147         String expected[] = new String[]{ "org.apache.maven/jars/testing-1.0.jar",
148             "org.apache.maven/java-sources/testing-1.0-sources.jar",
149             "org.apache.maven/jars/testing-1.0-20050611.112233-1.jar", "org.apache.maven/poms/testing-1.0.pom",
150             "org.apache.maven/distributions/testing-1.0.tar.gz", "org.apache.maven/distributions/testing-1.0.zip",
151             "org.apache.maven/javadoc.jars/testing-1.0-javadoc.jar" };
152
153         StringBuilder relatedDebugString = new StringBuilder();
154         relatedDebugString.append( "[" );
155         for ( ArtifactReference ref : related )
156         {
157             String actualPath = repoContent.toPath( ref );
158             relatedDebugString.append( actualPath ).append( ":" );
159         }
160         relatedDebugString.append( "]" );
161
162         for ( String expectedPath : expected )
163         {
164             boolean found = false;
165             for ( ArtifactReference actualRef : related )
166             {
167                 String actualPath = repoContent.toPath( actualRef );
168                 if ( actualPath.endsWith( expectedPath ) )
169                 {
170                     found = true;
171                     break;
172                 }
173             }
174             if ( !found )
175             {
176                 fail( "Unable to find expected artifact [" + expectedPath + "] in list of related artifacts. "
177                           + "Related <" + relatedDebugString + ">" );
178             }
179         }
180         assertEquals( "Related <" + relatedDebugString + ">:", expected.length, related.size() );
181     }
182
183
184     @Override
185     protected ArtifactReference toArtifactReference( String path )
186         throws LayoutException
187     {
188         return repoContent.toArtifactReference( path );
189     }
190
191     @Override
192     protected String toPath( ArtifactReference reference )
193     {
194         return repoContent.toPath( reference );
195     }
196 }