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