]> source.dussan.org Git - archiva.git/blob
79636c6f157bb2b56eb5b35898552f791fdb4c0d
[archiva.git] /
1 package org.apache.maven.archiva.reporting;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.artifact.factory.ArtifactFactory;
21 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
22 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
23 import org.apache.maven.artifact.repository.metadata.Plugin;
24 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
25 import org.apache.maven.artifact.repository.metadata.Snapshot;
26 import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
27 import org.apache.maven.artifact.repository.metadata.Versioning;
28
29 import java.util.Iterator;
30
31 public class BadMetadataReportProcessorTest
32     extends AbstractRepositoryReportsTestCase
33 {
34     private ArtifactFactory artifactFactory;
35
36     private MetadataReportProcessor badMetadataReportProcessor;
37
38     private ArtifactReporter reporter = new DefaultArtifactReporter();
39
40     protected void setUp()
41         throws Exception
42     {
43         super.setUp();
44
45         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
46
47         badMetadataReportProcessor = (MetadataReportProcessor) lookup( MetadataReportProcessor.ROLE );
48     }
49
50     public void testMetadataMissingLastUpdated()
51         throws ReportProcessorException
52     {
53         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
54
55         Versioning versioning = new Versioning();
56         versioning.addVersion( "1.0-alpha-1" );
57         versioning.addVersion( "1.0-alpha-2" );
58
59         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
60
61         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
62
63         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
64         assertTrue( "check there is a failure", failures.hasNext() );
65         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
66         assertEquals( "check metadata", metadata, result.getMetadata() );
67         assertEquals( "check reason", "Missing lastUpdated element inside the metadata.", result.getReason() );
68         assertFalse( "check no more failures", failures.hasNext() );
69     }
70
71     public void testMetadataValidVersions()
72         throws ReportProcessorException
73     {
74         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
75
76         Versioning versioning = new Versioning();
77         versioning.addVersion( "1.0-alpha-1" );
78         versioning.addVersion( "1.0-alpha-2" );
79         versioning.setLastUpdated( "20050611.202020" );
80
81         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
82
83         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
84
85         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
86         assertFalse( "check there are no failures", failures.hasNext() );
87     }
88
89     public void testMetadataMissingADirectory()
90         throws ReportProcessorException
91     {
92         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
93
94         Versioning versioning = new Versioning();
95         versioning.addVersion( "1.0-alpha-1" );
96         versioning.setLastUpdated( "20050611.202020" );
97
98         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
99
100         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
101
102         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
103         assertTrue( "check there is a failure", failures.hasNext() );
104         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
105         assertEquals( "check metadata", metadata, result.getMetadata() );
106         // TODO: should be more robust
107         assertEquals( "check reason",
108                       "Artifact version 1.0-alpha-2 found in the repository but missing in the metadata.",
109                       result.getReason() );
110         assertFalse( "check no more failures", failures.hasNext() );
111     }
112
113     public void testMetadataInvalidArtifactVersion()
114         throws ReportProcessorException
115     {
116         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
117
118         Versioning versioning = new Versioning();
119         versioning.addVersion( "1.0-alpha-1" );
120         versioning.addVersion( "1.0-alpha-2" );
121         versioning.addVersion( "1.0-alpha-3" );
122         versioning.setLastUpdated( "20050611.202020" );
123
124         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
125
126         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
127
128         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
129         assertTrue( "check there is a failure", failures.hasNext() );
130         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
131         assertEquals( "check metadata", metadata, result.getMetadata() );
132         // TODO: should be more robust
133         assertEquals( "check reason",
134                       "Artifact version 1.0-alpha-3 is present in metadata but missing in the repository.",
135                       result.getReason() );
136         assertFalse( "check no more failures", failures.hasNext() );
137     }
138
139     public void testMoreThanOneMetadataVersionErrors()
140         throws ReportProcessorException
141     {
142         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
143
144         Versioning versioning = new Versioning();
145         versioning.addVersion( "1.0-alpha-1" );
146         versioning.addVersion( "1.0-alpha-3" );
147         versioning.setLastUpdated( "20050611.202020" );
148
149         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
150
151         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
152
153         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
154         assertTrue( "check there is a failure", failures.hasNext() );
155         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
156         assertEquals( "check metadata", metadata, result.getMetadata() );
157         // TODO: should be more robust
158         assertEquals( "check reason",
159                       "Artifact version 1.0-alpha-3 is present in metadata but missing in the repository.",
160                       result.getReason() );
161         assertTrue( "check there is a 2nd failure", failures.hasNext() );
162         result = (RepositoryMetadataResult) failures.next();
163         // TODO: should be more robust
164         assertEquals( "check reason",
165                       "Artifact version 1.0-alpha-2 found in the repository but missing in the metadata.",
166                       result.getReason() );
167         assertFalse( "check no more failures", failures.hasNext() );
168     }
169
170     public void testValidPluginMetadata()
171         throws ReportProcessorException
172     {
173         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
174         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
175         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
176
177         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
178
179         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
180         assertFalse( "check there are no failures", failures.hasNext() );
181     }
182
183     public void testMissingMetadataPlugin()
184         throws ReportProcessorException
185     {
186         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
187         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
188         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
189         metadata.getMetadata().addPlugin( createMetadataPlugin( "missing-plugin", "default3" ) );
190
191         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
192
193         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
194         assertTrue( "check there is a failure", failures.hasNext() );
195         Result result = (Result) failures.next();
196         // TODO: should be more robust
197         assertEquals( "check reason", "Metadata plugin missing-plugin not found in the repository",
198                       result.getReason() );
199         assertFalse( "check no more failures", failures.hasNext() );
200     }
201
202     public void testIncompletePluginMetadata()
203         throws ReportProcessorException
204     {
205         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
206         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
207
208         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
209
210         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
211         assertTrue( "check there is a failure", failures.hasNext() );
212         Result result = (Result) failures.next();
213         // TODO: should be more robust
214         assertEquals( "check reason",
215                       "Plugin snapshot-artifact is present in the repository but " + "missing in the metadata.",
216                       result.getReason() );
217         assertFalse( "check no more failures", failures.hasNext() );
218     }
219
220     public void testInvalidPluginArtifactId()
221         throws ReportProcessorException
222     {
223         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
224         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
225         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
226         metadata.getMetadata().addPlugin( createMetadataPlugin( null, "default3" ) );
227         metadata.getMetadata().addPlugin( createMetadataPlugin( "", "default4" ) );
228
229         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
230
231         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
232         assertTrue( "check there is a failure", failures.hasNext() );
233         Result result = (Result) failures.next();
234         // TODO: should be more robust
235         assertEquals( "check reason", "Missing or empty artifactId in group metadata.", result.getReason() );
236         assertTrue( "check there is a 2nd failure", failures.hasNext() );
237         result = (Result) failures.next();
238         // TODO: should be more robust
239         assertEquals( "check reason", "Missing or empty artifactId in group metadata.", result.getReason() );
240         assertFalse( "check no more failures", failures.hasNext() );
241     }
242
243     public void testInvalidPluginPrefix()
244         throws ReportProcessorException
245     {
246         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
247         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", null ) );
248         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "" ) );
249
250         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
251
252         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
253         assertTrue( "check there is a failure", failures.hasNext() );
254         Result result = (Result) failures.next();
255         // TODO: should be more robust
256         assertEquals( "check reason", "Missing or empty plugin prefix for artifactId artifactId.", result.getReason() );
257         assertTrue( "check there is a 2nd failure", failures.hasNext() );
258         result = (Result) failures.next();
259         // TODO: should be more robust
260         assertEquals( "check reason", "Missing or empty plugin prefix for artifactId snapshot-artifact.",
261                       result.getReason() );
262         assertFalse( "check no more failures", failures.hasNext() );
263     }
264
265     public void testDuplicatePluginPrefixes()
266         throws ReportProcessorException
267     {
268         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
269         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
270         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default" ) );
271
272         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
273
274         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
275         assertTrue( "check there is a failure", failures.hasNext() );
276         Result result = (Result) failures.next();
277         // TODO: should be more robust
278         assertEquals( "check reason", "Duplicate plugin prefix found: default.", result.getReason() );
279         assertFalse( "check no more failures", failures.hasNext() );
280     }
281
282     public void testValidSnapshotMetadata()
283         throws ReportProcessorException
284     {
285         Artifact artifact =
286             artifactFactory.createBuildArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT", "type" );
287
288         Snapshot snapshot = new Snapshot();
289         snapshot.setBuildNumber( 1 );
290         snapshot.setTimestamp( "20050611.202024" );
291
292         RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
293
294         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
295
296         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
297         assertFalse( "check there are no failures", failures.hasNext() );
298     }
299
300     public void testInvalidSnapshotMetadata()
301         throws ReportProcessorException
302     {
303         Artifact artifact =
304             artifactFactory.createBuildArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT", "type" );
305
306         Snapshot snapshot = new Snapshot();
307         snapshot.setBuildNumber( 2 );
308         snapshot.setTimestamp( "20050611.202024" );
309
310         RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
311
312         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
313
314         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
315         assertTrue( "check there is a failure", failures.hasNext() );
316         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
317         assertEquals( "check metadata", metadata, result.getMetadata() );
318         // TODO: should be more robust
319         assertEquals( "check reason", "Snapshot artifact 1.0-alpha-1-20050611.202024-2 does not exist.",
320                       result.getReason() );
321         assertFalse( "check no more failures", failures.hasNext() );
322     }
323
324     private Plugin createMetadataPlugin( String artifactId, String prefix )
325     {
326         Plugin plugin = new Plugin();
327         plugin.setArtifactId( artifactId );
328         plugin.setName( artifactId );
329         plugin.setPrefix( prefix );
330         return plugin;
331     }
332 }