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