View Javadoc

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.Collections;
33  import java.util.List;
34  import java.util.Set;
35  
36  /**
37   * ManagedLegacyRepositoryContentTest
38   *
39   * @version $Id: ManagedLegacyRepositoryContentTest.java 718864 2008-11-19 06:33:35Z brett $
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  //            "1.0-javadoc",
52  //            "1.0-sources",
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  //            "1.0-javadoc",
62  //            "1.0-sources",
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          // Request the versions.
75          Set<String> testedVersionSet = repoContent.getVersions( reference );
76  
77          // Sort the list (for asserts later)
78          List<String> testedVersions = new ArrayList<String>();
79          testedVersions.addAll( testedVersionSet );
80          Collections.sort( testedVersions, new VersionComparator() );
81  
82          // Test the expected array of versions, to the actual tested versions
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         // Request the versions.
101         Set<String> testedVersionSet = repoContent.getVersions( reference );
102 
103         // Sort the list (for asserts later)
104         List<String> testedVersions = new ArrayList<String>();
105         testedVersions.addAll( testedVersionSet );
106         Collections.sort( testedVersions, new VersionComparator() );
107 
108         // Test the expected array of versions, to the actual tested versions
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 }