]> source.dussan.org Git - archiva.git/blob
f86259063b6aa799cc5b1a0d2b0bbd4344fb5354
[archiva.git] /
1 package org.apache.maven.archiva.repository.content;
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.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.Arrays;
33 import java.util.Collections;
34 import java.util.List;
35 import java.util.Set;
36
37 /**
38  * ManagedDefaultRepositoryContentTest 
39  *
40  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
41  * @version $Id$
42  */
43 public class ManagedDefaultRepositoryContentTest
44     extends AbstractDefaultRepositoryContentTestCase
45 {
46     private ManagedRepositoryContent repoContent;
47
48     public void testGetVersionsBadArtifact()
49         throws Exception
50     {
51         assertGetVersions( "bad_artifact", Collections.EMPTY_LIST );
52     }
53
54     public void testGetVersionsMissingMultipleVersions()
55         throws Exception
56     {
57         assertGetVersions( "missing_metadata_b", Arrays.asList( "1.0", "1.0.1", "2.0", "2.0.1", "2.0-20070821-dev" ) );
58     }
59
60     public void testGetVersionsSimple()
61         throws Exception
62     {
63         assertVersions( "proxied_multi", "2.1", new String[] { "2.1" } );
64     }
65
66     public void testGetVersionsSimpleYetIncomplete()
67         throws Exception
68     {
69         assertGetVersions( "incomplete_metadata_a", Collections.singletonList( "1.0" ) );
70     }
71
72     public void testGetVersionsSimpleYetMissing()
73         throws Exception
74     {
75         assertGetVersions( "missing_metadata_a", Collections.singletonList( "1.0" ) );
76     }
77
78     public void testGetVersionsSnapshotA()
79         throws Exception
80     {
81         assertVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[] {
82             "1.0-alpha-11-SNAPSHOT",
83             "1.0-alpha-11-20070221.194724-2",
84             "1.0-alpha-11-20070302.212723-3",
85             "1.0-alpha-11-20070303.152828-4",
86             "1.0-alpha-11-20070305.215149-5",
87             "1.0-alpha-11-20070307.170909-6",
88             "1.0-alpha-11-20070314.211405-9",
89             "1.0-alpha-11-20070316.175232-11" } );
90     }
91
92     public void testToMetadataPathFromProjectReference()
93     {
94         ProjectReference reference = new ProjectReference();
95         reference.setGroupId( "com.foo" );
96         reference.setArtifactId( "foo-tool" );
97
98         assertEquals( "com/foo/foo-tool/maven-metadata.xml", repoContent.toMetadataPath( reference ) );
99     }
100
101     public void testToMetadataPathFromVersionReference()
102     {
103         VersionedReference reference = new VersionedReference();
104         reference.setGroupId( "com.foo" );
105         reference.setArtifactId( "foo-tool" );
106         reference.setVersion( "1.0" );
107
108         assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", repoContent.toMetadataPath( reference ) );
109     }
110
111     public void testToPathOnNullArtifactReference()
112     {
113         try
114         {
115             ArtifactReference reference = null;
116             repoContent.toPath( reference );
117             fail( "Should have failed due to null artifact reference." );
118         }
119         catch ( IllegalArgumentException e )
120         {
121             /* expected path */
122         }
123     }
124
125     private void assertGetVersions( String artifactId, List<String> expectedVersions )
126         throws Exception
127     {
128         ProjectReference reference = new ProjectReference();
129         reference.setGroupId( "org.apache.archiva.metadata.tests" );
130         reference.setArtifactId( artifactId );
131
132         // Use the test metadata-repository, which is already setup for
133         // These kind of version tests.
134         File repoDir = getTestFile( "src/test/repositories/metadata-repository" );
135         repoContent.getRepository().setLocation( repoDir.getAbsolutePath() );
136
137         // Request the versions.
138         Set<String> testedVersionSet = repoContent.getVersions( reference );
139
140         // Sort the list (for asserts)
141         List<String> testedVersions = new ArrayList<String>();
142         testedVersions.addAll( testedVersionSet );
143         Collections.sort( testedVersions, new VersionComparator() );
144
145         // Test the expected array of versions, to the actual tested versions
146         assertEquals( "available versions", expectedVersions, testedVersions );
147     }
148
149     private void assertVersions( String artifactId, String version, String[] expectedVersions )
150         throws Exception
151     {
152         VersionedReference reference = new VersionedReference();
153         reference.setGroupId( "org.apache.archiva.metadata.tests" );
154         reference.setArtifactId( artifactId );
155         reference.setVersion( version );
156
157         // Use the test metadata-repository, which is already setup for
158         // These kind of version tests.
159         File repoDir = getTestFile( "src/test/repositories/metadata-repository" );
160         repoContent.getRepository().setLocation( repoDir.getAbsolutePath() );
161
162         // Request the versions.
163         Set<String> testedVersionSet = repoContent.getVersions( reference );
164
165         // Sort the list (for asserts later)
166         List<String> testedVersions = new ArrayList<String>();
167         testedVersions.addAll( testedVersionSet );
168         Collections.sort( testedVersions, new VersionComparator() );
169
170         // Test the expected array of versions, to the actual tested versions
171         assertEquals( "Assert Versions: length/size", expectedVersions.length, testedVersions.size() );
172
173         for ( int i = 0; i < expectedVersions.length; i++ )
174         {
175             String actualVersion = testedVersions.get( i );
176             assertEquals( "Versions[" + i + "]", expectedVersions[i], actualVersion );
177         }
178     }
179
180     @Override
181     protected void setUp()
182         throws Exception
183     {
184         super.setUp();
185
186         File repoDir = getTestFile( "src/test/repositories/default-repository" );
187
188         ManagedRepositoryConfiguration repository = createRepository( "testRepo", "Unit Test Repo", repoDir );
189
190         repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" );
191         repoContent.setRepository( repository );
192     }
193
194     @Override
195     protected ArtifactReference toArtifactReference( String path )
196         throws LayoutException
197     {
198         return repoContent.toArtifactReference( path );
199     }
200
201     @Override
202     protected String toPath( ArtifactReference reference )
203     {
204         return repoContent.toPath( reference );
205     }
206 }