1 package org.apache.maven.archiva.repository.content;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.archiva.common.utils.VersionComparator;
23 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
24 import org.apache.maven.archiva.model.ArtifactReference;
25 import org.apache.maven.archiva.model.ProjectReference;
26 import org.apache.maven.archiva.model.VersionedReference;
27 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
28 import org.apache.maven.archiva.repository.layout.LayoutException;
29
30 import java.io.File;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.Set;
35
36
37
38
39
40
41 public class ManagedLegacyRepositoryContentTest
42 extends AbstractLegacyRepositoryContentTestCase
43 {
44 private ManagedRepositoryContent repoContent;
45
46 public void testGetVersionsFromProjectReference()
47 throws Exception
48 {
49 assertVersions( "org.apache.maven", "testing", new String[] {
50 "UNKNOWN",
51
52
53 "1.0",
54 "1.0-20050611.112233-1" } );
55 }
56
57 public void testGetVersionsFromVersionedReference()
58 throws Exception
59 {
60 assertVersions( "org.apache.maven", "testing", "1.0", new String[] {
61
62
63 "1.0",
64 "1.0-20050611.112233-1" } );
65 }
66
67 private void assertVersions( String groupId, String artifactId, String[] expectedVersions )
68 throws Exception
69 {
70 ProjectReference reference = new ProjectReference();
71 reference.setGroupId( groupId );
72 reference.setArtifactId( artifactId );
73
74
75 Set<String> testedVersionSet = repoContent.getVersions( reference );
76
77
78 List<String> testedVersions = new ArrayList<String>();
79 testedVersions.addAll( testedVersionSet );
80 Collections.sort( testedVersions, new VersionComparator() );
81
82
83 assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );
84
85 for ( int i = 0; i < expectedVersions.length; i++ )
86 {
87 String actualVersion = testedVersions.get( i );
88 assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
89 }
90 }
91
92 private void assertVersions( String groupId, String artifactId, String version, String[] expectedVersions )
93 throws Exception
94 {
95 VersionedReference reference = new VersionedReference();
96 reference.setGroupId( groupId );
97 reference.setArtifactId( artifactId );
98 reference.setVersion( version );
99
100
101 Set<String> testedVersionSet = repoContent.getVersions( reference );
102
103
104 List<String> testedVersions = new ArrayList<String>();
105 testedVersions.addAll( testedVersionSet );
106 Collections.sort( testedVersions, new VersionComparator() );
107
108
109 assertEquals( "Assert (Project) Versions: length/size", expectedVersions.length, testedVersions.size() );
110
111 for ( int i = 0; i < expectedVersions.length; i++ )
112 {
113 String actualVersion = testedVersions.get( i );
114 assertEquals( "(Project) Versions[" + i + "]", expectedVersions[i], actualVersion );
115 }
116 }
117
118 public void testGetRelatedArtifacts()
119 throws Exception
120 {
121 ArtifactReference reference = createArtifact( "org.apache.maven", "testing", "1.0", null, "jar" );
122
123 Set<ArtifactReference> related = repoContent.getRelatedArtifacts( reference );
124 assertNotNull( related );
125
126 String expected[] = new String[] {
127 "org.apache.maven/jars/testing-1.0.jar",
128 "org.apache.maven/java-sources/testing-1.0-sources.jar",
129 "org.apache.maven/jars/testing-1.0-20050611.112233-1.jar",
130 "org.apache.maven/poms/testing-1.0.pom",
131 "org.apache.maven/distributions/testing-1.0.tar.gz",
132 "org.apache.maven/distributions/testing-1.0.zip",
133 "org.apache.maven/javadoc.jars/testing-1.0-javadoc.jar" };
134
135 StringBuffer relatedDebugString = new StringBuffer();
136 relatedDebugString.append( "[" );
137 for ( ArtifactReference ref : related )
138 {
139 String actualPath = repoContent.toPath( ref );
140 relatedDebugString.append( actualPath ).append( ":" );
141 }
142 relatedDebugString.append( "]" );
143
144 for ( String expectedPath : expected )
145 {
146 boolean found = false;
147 for ( ArtifactReference actualRef : related )
148 {
149 String actualPath = repoContent.toPath( actualRef );
150 if ( actualPath.endsWith( expectedPath ) )
151 {
152 found = true;
153 break;
154 }
155 }
156 if ( !found )
157 {
158 fail( "Unable to find expected artifact [" + expectedPath + "] in list of related artifacts. "
159 + "Related <" + relatedDebugString + ">" );
160 }
161 }
162 assertEquals( "Related <" + relatedDebugString + ">:", expected.length, related.size() );
163 }
164
165 @Override
166 protected void setUp()
167 throws Exception
168 {
169 super.setUp();
170
171 File repoDir = getTestFile( "src/test/repositories/legacy-repository" );
172
173 ManagedRepositoryConfiguration repository = createRepository( "testRepo", "Unit Test Repo", repoDir );
174 repository.setLayout( "legacy" );
175
176 repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "legacy" );
177 repoContent.setRepository( repository );
178 }
179
180 @Override
181 protected ArtifactReference toArtifactReference( String path )
182 throws LayoutException
183 {
184 return repoContent.toArtifactReference( path );
185 }
186
187 @Override
188 protected String toPath( ArtifactReference reference )
189 {
190 return repoContent.toPath( reference );
191 }
192 }