]> source.dussan.org Git - archiva.git/blob
4a189b62a7c307add80e4641b83827f61f4584a8
[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 /**
32  * @todo??? should use MetadataXpp3Reader instead ?
33  */
34 public class BadMetadataReportProcessorTest
35     extends AbstractRepositoryReportsTestCase
36 {
37     private ArtifactFactory artifactFactory;
38
39     private MetadataReportProcessor badMetadataReportProcessor;
40
41     protected void setUp()
42         throws Exception
43     {
44         super.setUp();
45
46         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
47
48         badMetadataReportProcessor = (MetadataReportProcessor) lookup( MetadataReportProcessor.ROLE );
49     }
50
51     public void testMetadataMissingLastUpdated()
52         throws ReportProcessorException
53     {
54         ArtifactReporter reporter = new MockArtifactReporter();
55
56         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
57
58         Versioning versioning = new Versioning();
59         versioning.addVersion( "1.0-alpha-1" );
60         versioning.addVersion( "1.0-alpha-2" );
61
62         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
63
64         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
65
66         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
67         assertTrue( "check there is a failure", failures.hasNext() );
68         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
69         assertEquals( "check metadata", metadata, result.getMetadata() );
70         assertEquals( "check reason", "Missing lastUpdated element inside the metadata.", result.getReason() );
71         assertFalse( "check no more failures", failures.hasNext() );
72     }
73
74     public void testMetadataValidVersions()
75         throws ReportProcessorException
76     {
77         ArtifactReporter reporter = new MockArtifactReporter();
78
79         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
80
81         Versioning versioning = new Versioning();
82         versioning.addVersion( "1.0-alpha-1" );
83         versioning.addVersion( "1.0-alpha-2" );
84         versioning.setLastUpdated( "20050611.202020" );
85
86         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
87
88         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
89
90         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
91         assertFalse( "check there are no failures", failures.hasNext() );
92     }
93
94     public void testMetadataMissingADirectory()
95         throws ReportProcessorException
96     {
97         ArtifactReporter reporter = new MockArtifactReporter();
98
99         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
100
101         Versioning versioning = new Versioning();
102         versioning.addVersion( "1.0-alpha-1" );
103         versioning.setLastUpdated( "20050611.202020" );
104
105         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
106
107         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
108
109         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
110         assertTrue( "check there is a failure", failures.hasNext() );
111         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
112         assertEquals( "check metadata", metadata, result.getMetadata() );
113         // TODO: should be more robust
114         assertEquals( "check reason",
115                       "Artifact version 1.0-alpha-2 found in the repository but missing in the metadata.",
116                       result.getReason() );
117         assertFalse( "check no more failures", failures.hasNext() );
118     }
119
120     public void testMetadataInvalidArtifactVersion()
121         throws ReportProcessorException
122     {
123         ArtifactReporter reporter = new MockArtifactReporter();
124
125         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
126
127         Versioning versioning = new Versioning();
128         versioning.addVersion( "1.0-alpha-1" );
129         versioning.addVersion( "1.0-alpha-2" );
130         versioning.addVersion( "1.0-alpha-3" );
131         versioning.setLastUpdated( "20050611.202020" );
132
133         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
134
135         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
136
137         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
138         assertTrue( "check there is a failure", failures.hasNext() );
139         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
140         assertEquals( "check metadata", metadata, result.getMetadata() );
141         // TODO: should be more robust
142         assertEquals( "check reason",
143                       "Artifact version 1.0-alpha-3 is present in metadata but missing in the repository.",
144                       result.getReason() );
145         assertFalse( "check no more failures", failures.hasNext() );
146     }
147
148     public void testMoreThanOneMetadataVersionErrors()
149         throws ReportProcessorException
150     {
151         ArtifactReporter reporter = new MockArtifactReporter();
152
153         Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
154
155         Versioning versioning = new Versioning();
156         versioning.addVersion( "1.0-alpha-1" );
157         versioning.addVersion( "1.0-alpha-3" );
158         versioning.setLastUpdated( "20050611.202020" );
159
160         RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
161
162         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
163
164         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
165         assertTrue( "check there is a failure", failures.hasNext() );
166         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
167         assertEquals( "check metadata", metadata, result.getMetadata() );
168         // TODO: should be more robust
169         assertEquals( "check reason",
170                       "Artifact version 1.0-alpha-3 is present in metadata but missing in the repository.",
171                       result.getReason() );
172         assertTrue( "check there is a 2nd failure", failures.hasNext() );
173         result = (RepositoryMetadataResult) failures.next();
174         // TODO: should be more robust
175         assertEquals( "check reason",
176                       "Artifact version 1.0-alpha-2 found in the repository but missing in the metadata.",
177                       result.getReason() );
178         assertFalse( "check no more failures", failures.hasNext() );
179     }
180
181     public void testValidPluginMetadata()
182         throws ReportProcessorException
183     {
184         ArtifactReporter reporter = new MockArtifactReporter();
185
186         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
187         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
188         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
189
190         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
191
192         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
193         assertFalse( "check there are no failures", failures.hasNext() );
194     }
195
196     public void testMissingMetadataPlugin()
197         throws ReportProcessorException
198     {
199         ArtifactReporter reporter = new MockArtifactReporter();
200
201         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
202         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
203         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
204         metadata.getMetadata().addPlugin( createMetadataPlugin( "missing-plugin", "default3" ) );
205
206         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
207
208         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
209         assertTrue( "check there is a failure", failures.hasNext() );
210         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
211         // TODO: should be more robust
212         assertEquals( "check reason", "Metadata plugin missing-plugin not found in the repository",
213                       result.getReason() );
214         assertFalse( "check no more failures", failures.hasNext() );
215     }
216
217     public void testIncompletePluginMetadata()
218         throws ReportProcessorException
219     {
220         ArtifactReporter reporter = new MockArtifactReporter();
221
222         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
223         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
224
225         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
226
227         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
228         assertTrue( "check there is a failure", failures.hasNext() );
229         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
230         // TODO: should be more robust
231         assertEquals( "check reason",
232                       "Plugin snapshot-artifact is present in the repository but " + "missing in the metadata.",
233                       result.getReason() );
234         assertFalse( "check no more failures", failures.hasNext() );
235     }
236
237     public void testInvalidPluginArtifactId()
238         throws ReportProcessorException
239     {
240         ArtifactReporter reporter = new MockArtifactReporter();
241
242         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
243         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
244         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
245         metadata.getMetadata().addPlugin( createMetadataPlugin( null, "default3" ) );
246         metadata.getMetadata().addPlugin( createMetadataPlugin( "", "default4" ) );
247
248         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
249
250         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
251         assertTrue( "check there is a failure", failures.hasNext() );
252         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
253         // TODO: should be more robust
254         assertEquals( "check reason", "Missing or empty artifactId in group metadata.", result.getReason() );
255         assertTrue( "check there is a 2nd failure", failures.hasNext() );
256         result = (RepositoryMetadataResult) failures.next();
257         // TODO: should be more robust
258         assertEquals( "check reason", "Missing or empty artifactId in group metadata.", result.getReason() );
259         assertFalse( "check no more failures", failures.hasNext() );
260     }
261
262     public void testInvalidPluginPrefix()
263         throws ReportProcessorException
264     {
265         ArtifactReporter reporter = new MockArtifactReporter();
266
267         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
268         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", null ) );
269         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "" ) );
270
271         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
272
273         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
274         assertTrue( "check there is a failure", failures.hasNext() );
275         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
276         // TODO: should be more robust
277         assertEquals( "check reason", "Missing or empty plugin prefix for artifactId artifactId.", result.getReason() );
278         assertTrue( "check there is a 2nd failure", failures.hasNext() );
279         result = (RepositoryMetadataResult) failures.next();
280         // TODO: should be more robust
281         assertEquals( "check reason", "Missing or empty plugin prefix for artifactId snapshot-artifact.",
282                       result.getReason() );
283         assertFalse( "check no more failures", failures.hasNext() );
284     }
285
286     public void testDuplicatePluginPrefixes()
287         throws ReportProcessorException
288     {
289         ArtifactReporter reporter = new MockArtifactReporter();
290
291         RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
292         metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
293         metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default" ) );
294
295         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
296
297         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
298         assertTrue( "check there is a failure", failures.hasNext() );
299         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
300         // TODO: should be more robust
301         assertEquals( "check reason", "Duplicate plugin prefix found: default.", result.getReason() );
302         assertFalse( "check no more failures", failures.hasNext() );
303     }
304
305     public void testValidSnapshotMetadata()
306         throws ReportProcessorException
307     {
308         ArtifactReporter reporter = new MockArtifactReporter();
309
310         Artifact artifact =
311             artifactFactory.createBuildArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT", "type" );
312
313         Snapshot snapshot = new Snapshot();
314         snapshot.setBuildNumber( 1 );
315         snapshot.setTimestamp( "20050611.202024" );
316
317         RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
318
319         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
320
321         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
322         assertFalse( "check there are no failures", failures.hasNext() );
323     }
324
325     public void testInvalidSnapshotMetadata()
326         throws ReportProcessorException
327     {
328         ArtifactReporter reporter = new MockArtifactReporter();
329
330         Artifact artifact =
331             artifactFactory.createBuildArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT", "type" );
332
333         Snapshot snapshot = new Snapshot();
334         snapshot.setBuildNumber( 2 );
335         snapshot.setTimestamp( "20050611.202024" );
336
337         RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
338
339         badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
340
341         Iterator failures = reporter.getRepositoryMetadataFailureIterator();
342         assertTrue( "check there is a failure", failures.hasNext() );
343         RepositoryMetadataResult result = (RepositoryMetadataResult) failures.next();
344         assertEquals( "check metadata", metadata, result.getMetadata() );
345         // TODO: should be more robust
346         assertEquals( "check reason", "Snapshot artifact 20050611.202024-2 does not exist.", result.getReason() );
347         assertFalse( "check no more failures", failures.hasNext() );
348     }
349
350     private Plugin createMetadataPlugin( String artifactId, String prefix )
351     {
352         Plugin plugin = new Plugin();
353         plugin.setArtifactId( artifactId );
354         plugin.setName( artifactId );
355         plugin.setPrefix( prefix );
356         return plugin;
357     }
358 }