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