1 package org.apache.archiva.proxy;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.common.utils.VersionUtil;
23 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
24 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
25 import org.apache.archiva.model.ArchivaRepositoryMetadata;
26 import org.apache.archiva.model.Plugin;
27 import org.apache.archiva.model.ProjectReference;
28 import org.apache.archiva.model.SnapshotVersion;
29 import org.apache.archiva.model.VersionedReference;
30 import org.apache.archiva.policies.CachedFailuresPolicy;
31 import org.apache.archiva.policies.ChecksumPolicy;
32 import org.apache.archiva.policies.ReleasesPolicy;
33 import org.apache.archiva.policies.SnapshotsPolicy;
34 import org.apache.archiva.proxy.model.ProxyFetchResult;
35 import org.apache.archiva.repository.metadata.MetadataTools;
36 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
37 import org.apache.archiva.repository.metadata.RepositoryMetadataWriter;
38 import org.apache.commons.lang.StringUtils;
39 import org.apache.maven.wagon.ResourceDoesNotExistException;
40 import org.apache.maven.wagon.TransferFailedException;
41 import org.custommonkey.xmlunit.DetailedDiff;
42 import org.custommonkey.xmlunit.Diff;
43 import org.easymock.EasyMock;
44 import org.junit.Test;
45
46 import javax.inject.Inject;
47 import javax.inject.Named;
48 import java.io.File;
49 import java.io.StringWriter;
50 import java.util.ArrayList;
51 import java.util.Arrays;
52
53 import static org.junit.Assert.*;
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 public class MetadataTransferTest
101 extends AbstractProxyTestCase
102 {
103
104 @Inject
105 @Named(value = "metadataTools#mocked")
106 private MetadataTools metadataTools;
107
108
109 @Test
110 public void testGetProjectMetadataProxiedNotLocalOnRemoteConnectoDisabled()
111 throws Exception
112 {
113
114 String requestedResource = "org/apache/maven/test/get-found-in-proxy/maven-metadata.xml";
115 setupTestableManagedRepository( requestedResource );
116
117
118 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
119 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, true );
120
121 assertResourceNotFound( requestedResource );
122 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
123
124 File expectedFile = new File( managedDefaultDir, requestedResource );
125
126 ProjectReference metadata = createProjectReference( requestedResource );
127
128 File downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository,
129 managedDefaultRepository.toMetadataPath(
130 metadata ) ).getFile();
131
132 assertNull( "Should not have downloaded a file.", downloadedFile );
133 assertNoTempFiles( expectedFile );
134 }
135
136
137 @Test
138 public void testFetchFromTwoProxiesWhenFirstConnectionFails()
139 throws Exception
140 {
141
142 String requestedResource = "org/apache/maven/test/get-default-layout/maven-metadata.xml";
143 setupTestableManagedRepository( requestedResource );
144
145 saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" );
146
147
148 saveConnector( ID_DEFAULT_MANAGED, "badproxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
149 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
150 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
151 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
152
153 assertResourceNotFound( requestedResource );
154 assertNoRepoMetadata( "badproxied1", requestedResource );
155 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
156
157
158 File expectedFile = new File( managedDefaultDir.getAbsoluteFile(),
159 metadataTools.getRepositorySpecificName( "badproxied1", requestedResource ) );
160
161 wagonMock.get( EasyMock.eq( requestedResource ), EasyMock.anyObject( File.class ));
162 EasyMock.expectLastCall().andThrow( new TransferFailedException( "can't connect" ) );
163
164
165 wagonMockControl.replay();
166
167 assertFetchProjectOrGroup( requestedResource );
168
169 wagonMockControl.verify();
170
171 assertProjectMetadataContents( requestedResource, new String[]{ "1.0.1" }, "1.0.1", "1.0.1" );
172 assertNoRepoMetadata( "badproxied1", requestedResource );
173 assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0.1" } );
174 }
175
176
177
178
179
180
181
182 @Test
183 public void testGetProjectMetadataNotProxiedNotLocal()
184 throws Exception
185 {
186
187 String requestedResource = "org/apache/maven/test/get-default-metadata-nonexistant/maven-metadata.xml";
188 setupTestableManagedRepository( requestedResource );
189
190 config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) );
191
192 assertResourceNotFound( requestedResource );
193
194
195 assertFetchProjectOrGroupFailed( requestedResource );
196
197
198 assertResourceNotFound( requestedResource );
199 }
200
201 @Test
202 public void testGetProjectMetadataNotProxiedOnLocal()
203 throws Exception
204 {
205
206
207 String requestedResource = "org/apache/maven/test/get-project-metadata/maven-metadata.xml";
208 setupTestableManagedRepository( requestedResource );
209
210 config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) );
211
212 assertResourceExists( requestedResource );
213
214
215 assertFetchProjectOrGroup( requestedResource );
216
217
218
219
220 assertProjectMetadataContents( requestedResource, new String[]{ "1.0" }, null, null );
221 }
222
223 @Test
224 public void testGetProjectMetadataProxiedNotLocalMultipleRemotes()
225 throws Exception
226 {
227
228 String requestedResource = "org/apache/maven/test/get-default-layout/maven-metadata.xml";
229 setupTestableManagedRepository( requestedResource );
230
231
232 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
233 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
234 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
235 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
236
237 assertResourceNotFound( requestedResource );
238 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
239 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
240
241
242 assertFetchProjectOrGroup( requestedResource );
243
244
245 assertProjectMetadataContents( requestedResource, new String[]{ "1.0", "1.0.1" }, "1.0.1", "1.0.1" );
246 assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0" } );
247 assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0.1" } );
248 }
249
250 @Test
251 public void testGetProjectMetadataProxiedNotLocalNotRemote()
252 throws Exception
253 {
254
255 String requestedResource = "org/apache/maven/test/get-bogus-artifact/maven-metadata.xml";
256 setupTestableManagedRepository( requestedResource );
257
258
259 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
260 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
261 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
262 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
263
264 assertResourceNotFound( requestedResource );
265 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
266 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
267
268
269 assertFetchProjectOrGroupFailed( requestedResource );
270
271
272 assertResourceNotFound( requestedResource );
273 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
274 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
275 }
276
277 @Test
278 public void testGetProjectMetadataProxiedNotLocalOnRemote()
279 throws Exception
280 {
281
282 String requestedResource = "org/apache/maven/test/get-found-in-proxy/maven-metadata.xml";
283 setupTestableManagedRepository( requestedResource );
284
285
286 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
287 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
288
289 assertResourceNotFound( requestedResource );
290 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
291
292
293 assertFetchProjectOrGroup( requestedResource );
294
295
296 assertProjectMetadataContents( requestedResource, new String[]{ "1.0.5" }, "1.0.5", "1.0.5" );
297 assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0.5" } );
298 }
299
300 @Test
301 public void testGetProjectMetadataProxiedOnLocalMultipleRemote()
302 throws Exception
303 {
304
305 String requestedResource = "org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml";
306 setupTestableManagedRepository( requestedResource );
307
308
309 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
310 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
311 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
312 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
313
314 assertProjectMetadataContents( requestedResource, new String[]{ "1.0" }, null, null );
315 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
316 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
317
318
319 assertFetchProjectOrGroup( requestedResource );
320
321
322 assertProjectMetadataContents( requestedResource, new String[]{ "1.0", "1.0.1", "2.0" }, "2.0", "2.0" );
323 assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0", "2.0" } );
324 assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0", "1.0.1" } );
325 }
326
327 @Test
328 public void testGetProjectMetadataProxiedOnLocalNotRemote()
329 throws Exception
330 {
331
332
333 String requestedResource = "org/apache/maven/test/get-not-on-remotes/maven-metadata.xml";
334 setupTestableManagedRepository( requestedResource );
335
336
337 config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) );
338
339 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
340 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
341 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
342 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
343
344 assertProjectMetadataContents( requestedResource, new String[]{ "1.0-beta-2" }, null, null );
345 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
346 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
347
348
349 assertFetchProjectOrGroup( requestedResource );
350
351
352
353
354 assertProjectMetadataContents( requestedResource, new String[]{ "1.0-beta-2" }, null, null );
355 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
356 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
357 }
358
359 @Test
360 public void testGetProjectMetadataProxiedOnLocalOnRemote()
361 throws Exception
362 {
363
364 String requestedResource = "org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml";
365 setupTestableManagedRepository( requestedResource );
366
367
368 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
369 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
370
371 assertProjectMetadataContents( requestedResource, new String[]{ "1.0.8", "1.0.22" }, null, null );
372 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
373
374
375 assertFetchProjectOrGroup( requestedResource );
376
377
378 assertProjectMetadataContents( requestedResource, new String[]{ "1.0.8", "1.0.22", "2.0" }, "2.0", "2.0" );
379 assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0.22", "2.0" } );
380 }
381
382
383
384
385
386
387
388
389 @Test
390 public void testGetReleaseMetadataNotProxiedNotLocal()
391 throws Exception
392 {
393
394 String requestedResource = "org/apache/maven/test/get-default-metadata-nonexistant/1.0/maven-metadata.xml";
395 setupTestableManagedRepository( requestedResource );
396
397 assertNoMetadata( requestedResource );
398
399
400 assertFetchVersionedFailed( requestedResource );
401
402
403 assertNoMetadata( requestedResource );
404 }
405
406
407
408
409
410
411
412
413 @Test
414 public void testGetReleaseMetadataNotProxiedOnLocal()
415 throws Exception
416 {
417 String requestedResource = "org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml";
418 setupTestableManagedRepository( requestedResource );
419
420 assertResourceExists( requestedResource );
421
422 assertFetchVersioned( requestedResource );
423
424 assertReleaseMetadataContents( requestedResource );
425 }
426
427
428
429
430
431
432
433
434
435
436 @Test
437 public void testGetReleaseMetadataProxiedNotLocalMultipleRemotes()
438 throws Exception
439 {
440 String requestedResource = "org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml";
441 setupTestableManagedRepository( requestedResource );
442
443
444 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
445 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
446 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
447 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
448
449 assertResourceNotFound( requestedResource );
450 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
451 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
452
453 assertFetchVersioned( requestedResource );
454
455 assertReleaseMetadataContents( requestedResource );
456 assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource );
457 assertRepoReleaseMetadataContents( ID_PROXIED2, requestedResource );
458 }
459
460
461
462
463
464
465
466
467 @Test
468 public void testGetReleaseMetadataProxiedNotLocalNotRemote()
469 throws Exception
470 {
471 String requestedResource = "org/apache/maven/test/get-bad-metadata/1.0/maven-metadata.xml";
472 setupTestableManagedRepository( requestedResource );
473
474
475 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
476 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
477
478 assertResourceNotFound( requestedResource );
479
480 assertFetchProjectOrGroupFailed( requestedResource );
481
482 assertResourceNotFound( requestedResource );
483 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
484 }
485
486
487
488
489
490
491
492
493
494
495 @Test
496 public void testGetReleaseMetadataProxiedNotLocalOnRemote()
497 throws Exception
498 {
499 String requestedResource = "org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml";
500 setupTestableManagedRepository( requestedResource );
501
502
503 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
504 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
505
506 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
507
508 assertFetchVersioned( requestedResource );
509
510 assertReleaseMetadataContents( requestedResource );
511 assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource );
512 }
513
514
515
516
517
518
519
520
521
522
523 @Test
524 public void testGetReleaseMetadataProxiedOnLocalNotRemote()
525 throws Exception
526 {
527 String requestedResource = "org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml";
528 setupTestableManagedRepository( requestedResource );
529
530
531 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
532 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
533
534 assertReleaseMetadataContents( requestedResource );
535
536 assertFetchVersioned( requestedResource );
537
538 assertReleaseMetadataContents( requestedResource );
539 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
540 }
541
542
543
544
545
546
547
548
549
550 @Test
551 public void testGetReleaseMetadataProxiedOnLocalMultipleRemote()
552 throws Exception
553 {
554 String requestedResource = "org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml";
555 setupTestableManagedRepository( requestedResource );
556
557
558 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
559 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
560 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
561 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
562
563 assertReleaseMetadataContents( requestedResource );
564 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
565 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
566
567 assertFetchVersioned( requestedResource );
568
569 assertReleaseMetadataContents( requestedResource );
570 assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource );
571 assertRepoReleaseMetadataContents( ID_PROXIED2, requestedResource );
572 }
573
574
575
576
577
578
579
580
581
582 @Test
583 public void testGetReleaseMetadataProxiedOnLocalOnRemote()
584 throws Exception
585 {
586 String requestedResource = "org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml";
587 setupTestableManagedRepository( requestedResource );
588
589
590 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
591 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
592
593 assertReleaseMetadataContents( requestedResource );
594 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
595
596 assertFetchVersioned( requestedResource );
597
598 assertReleaseMetadataContents( requestedResource );
599 assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource );
600 }
601
602 @Test
603 public void testGetSnapshotMetadataNotProxiedNotLocal()
604 throws Exception
605 {
606
607 String requestedResource =
608 "org/apache/maven/test/get-default-metadata-nonexistant/1.0-SNAPSHOT/maven-metadata.xml";
609 setupTestableManagedRepository( requestedResource );
610
611 assertNoMetadata( requestedResource );
612
613
614 assertFetchVersionedFailed( requestedResource );
615
616
617 assertNoMetadata( requestedResource );
618 }
619
620 @Test
621 public void testGetSnapshotMetadataNotProxiedOnLocal()
622 throws Exception
623 {
624
625 String requestedResource =
626 "org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml";
627 setupTestableManagedRepository( requestedResource );
628
629 assertResourceExists( requestedResource );
630
631
632 assertFetchVersioned( requestedResource );
633
634
635 assertSnapshotMetadataContents( requestedResource, "20070821", "220304", 2 );
636 }
637
638 @Test
639 public void testGetSnapshotMetadataProxiedNotLocalMultipleRemotes()
640 throws Exception
641 {
642 String requestedResource =
643 "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml";
644 setupTestableManagedRepository( requestedResource );
645
646
647 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
648 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
649 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
650 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
651
652 assertResourceNotFound( requestedResource );
653 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
654 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
655
656
657 assertFetchVersioned( requestedResource );
658
659 assertSnapshotMetadataContents( requestedResource, "20070101", "000103", 2 );
660 assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20061227", "112101", 2 );
661 assertRepoSnapshotMetadataContents( ID_PROXIED2, requestedResource, "20070101", "000103", 2 );
662 }
663
664 @Test
665 public void testGetSnapshotMetadataProxiedNotLocalNotRemote()
666 throws Exception
667 {
668
669 String requestedResource =
670 "org/apache/maven/test/get-default-metadata-nonexistant/1.0-SNAPSHOT/maven-metadata.xml";
671 setupTestableManagedRepository( requestedResource );
672
673
674 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
675 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
676
677 assertNoMetadata( requestedResource );
678
679
680 assertFetchVersionedFailed( requestedResource );
681
682
683 assertNoMetadata( requestedResource );
684 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
685 }
686
687 @Test
688 public void testGetSnapshotMetadataProxiedNotLocalOnRemote()
689 throws Exception
690 {
691
692 String requestedResource = "org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml";
693 setupTestableManagedRepository( requestedResource );
694
695
696 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
697 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
698
699 assertResourceNotFound( requestedResource );
700
701
702 assertFetchVersioned( requestedResource );
703
704
705 assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 );
706 assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20050831", "101112", 1 );
707 }
708
709 @Test
710 public void testGetSnapshotMetadataProxiedOnLocalMultipleRemote()
711 throws Exception
712 {
713 String requestedResource = "org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml";
714 setupTestableManagedRepository( requestedResource );
715
716
717 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
718 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
719 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
720 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
721
722 assertSnapshotMetadataContents( requestedResource, "20070822", "021008", 3 );
723 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
724 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
725
726
727 assertFetchVersioned( requestedResource );
728
729 assertSnapshotMetadataContents( requestedResource, "20070823", "212711", 6 );
730 assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20070822", "145534", 9 );
731 assertRepoSnapshotMetadataContents( ID_PROXIED2, requestedResource, "20070823", "212711", 6 );
732 }
733
734 @Test
735 public void testGetSnapshotMetadataProxiedOnLocalNotRemote()
736 throws Exception
737 {
738
739 String requestedResource =
740 "org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml";
741 setupTestableManagedRepository( requestedResource );
742
743
744 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
745 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
746 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
747 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
748
749 assertResourceExists( requestedResource );
750 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
751 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
752
753
754 assertFetchVersioned( requestedResource );
755
756
757 assertSnapshotMetadataContents( requestedResource, "20070821", "220304", 2 );
758 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
759 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
760 }
761
762 @Test
763 public void testGetSnapshotMetadataProxiedOnLocalOnRemote()
764 throws Exception
765 {
766
767 String requestedResource =
768 "org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml";
769 setupTestableManagedRepository( requestedResource );
770
771
772 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
773 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
774
775 assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 );
776 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
777
778
779 assertFetchVersioned( requestedResource );
780
781
782 assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 );
783 assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20050831", "101112", 1 );
784 }
785
786 @Test
787 public void testGetGroupMetadataNotProxiedNotLocal()
788 throws Exception
789 {
790
791 String requestedResource = "org/apache/maven/test/groups/get-default-metadata-nonexistant/maven-metadata.xml";
792 setupTestableManagedRepository( requestedResource );
793
794 assertResourceNotFound( requestedResource );
795
796
797 assertFetchProjectOrGroupFailed( requestedResource );
798
799
800 assertResourceNotFound( requestedResource );
801 }
802
803 @Test
804 public void testGetGroupMetadataNotProxiedOnLocal()
805 throws Exception
806 {
807
808 String requestedResource = "org/apache/maven/test/groups/get-project-metadata/maven-metadata.xml";
809 setupTestableManagedRepository( requestedResource );
810
811 assertResourceExists( requestedResource );
812
813
814 assertFetchProjectOrGroup( requestedResource );
815
816
817
818
819 assertGroupMetadataContents( requestedResource, new String[]{ "plugin1" } );
820 }
821
822 @Test
823 public void testGetGroupMetadataProxiedNotLocalMultipleRemotes()
824 throws Exception
825 {
826
827 String requestedResource = "org/apache/maven/test/groups/get-default-layout/maven-metadata.xml";
828 setupTestableManagedRepository( requestedResource );
829
830
831 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
832 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
833 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
834 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
835
836 assertResourceNotFound( requestedResource );
837 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
838 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
839
840
841 assertFetchProjectOrGroup( requestedResource );
842
843
844 assertGroupMetadataContents( requestedResource, new String[]{ "plugin2", "plugin1" } );
845 assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin1" } );
846 assertRepoGroupMetadataContents( ID_PROXIED2, requestedResource, new String[]{ "plugin2" } );
847 }
848
849 @Test
850 public void testGetGroupsMetadataProxiedNotLocalNotRemote()
851 throws Exception
852 {
853
854 String requestedResource = "org/apache/maven/test/groups/get-bogus-artifact/maven-metadata.xml";
855 setupTestableManagedRepository( requestedResource );
856
857
858 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
859 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
860 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
861 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
862
863 assertResourceNotFound( requestedResource );
864 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
865 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
866
867
868 assertFetchProjectOrGroupFailed( requestedResource );
869
870
871 assertResourceNotFound( requestedResource );
872 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
873 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
874 }
875
876 @Test
877 public void testGetGroupMetadataProxiedNotLocalOnRemote()
878 throws Exception
879 {
880
881 String requestedResource = "org/apache/maven/test/groups/get-found-in-proxy/maven-metadata.xml";
882 setupTestableManagedRepository( requestedResource );
883
884
885 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
886 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
887
888 assertResourceNotFound( requestedResource );
889 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
890
891
892 assertFetchProjectOrGroup( requestedResource );
893
894
895 assertGroupMetadataContents( requestedResource, new String[]{ "plugin3" } );
896 assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin3" } );
897 }
898
899 @Test
900 public void testGetGroupMetadataProxiedOnLocalMultipleRemote()
901 throws Exception
902 {
903
904 String requestedResource = "org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml";
905 setupTestableManagedRepository( requestedResource );
906
907
908 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
909 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
910 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
911 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
912
913 assertGroupMetadataContents( requestedResource, new String[]{ "plugin1" } );
914 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
915 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
916
917
918 assertFetchProjectOrGroup( requestedResource );
919
920
921 assertGroupMetadataContents( requestedResource, new String[]{ "plugin1", "plugin2", "plugin4" } );
922 assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin1", "plugin4" } );
923 assertRepoGroupMetadataContents( ID_PROXIED2, requestedResource, new String[]{ "plugin1", "plugin2" } );
924 }
925
926 @Test
927 public void testGetGroupMetadataProxiedOnLocalNotRemote()
928 throws Exception
929 {
930
931 String requestedResource = "org/apache/maven/test/groups/get-not-on-remotes/maven-metadata.xml";
932 setupTestableManagedRepository( requestedResource );
933
934
935 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
936 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
937 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
938 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
939
940 assertGroupMetadataContents( requestedResource, new String[]{ "plugin5" } );
941 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
942 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
943
944
945 assertFetchProjectOrGroup( requestedResource );
946
947
948
949
950 assertGroupMetadataContents( requestedResource, new String[]{ "plugin5" } );
951 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
952 assertNoRepoMetadata( ID_PROXIED2, requestedResource );
953 }
954
955 @Test
956 public void testGetGroupMetadataProxiedOnLocalOnRemote()
957 throws Exception
958 {
959
960 String requestedResource = "org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml";
961 setupTestableManagedRepository( requestedResource );
962
963
964 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
965 SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
966
967 assertGroupMetadataContents( requestedResource, new String[]{ "plugin6", "plugin7" } );
968 assertNoRepoMetadata( ID_PROXIED1, requestedResource );
969
970
971 assertFetchProjectOrGroup( requestedResource );
972
973
974 assertGroupMetadataContents( requestedResource, new String[]{ "plugin6", "plugin7", "plugin4" } );
975 assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin7", "plugin4" } );
976 }
977
978
979
980
981
982
983
984 private void assertFetchProjectOrGroup( String requestedResource )
985 throws Exception
986 {
987 File expectedFile = new File( managedDefaultDir, requestedResource );
988
989 ProjectReference metadata = createProjectReference( requestedResource );
990
991 File downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository,
992 managedDefaultRepository.toMetadataPath(
993 metadata ) ).getFile();
994
995 assertNotNull( "Should have downloaded a file.", downloadedFile );
996 assertNoTempFiles( expectedFile );
997 }
998
999 private ProjectReference createProjectReference( String path )
1000 throws RepositoryMetadataException
1001 {
1002 return metadataTools.toProjectReference( path );
1003 }
1004
1005
1006
1007
1008
1009
1010
1011 private void assertFetchProjectOrGroupFailed( String requestedResource )
1012 throws Exception
1013 {
1014 File expectedFile = new File( managedDefaultDir, requestedResource );
1015 ProjectReference metadata = createProjectReference( requestedResource );
1016
1017 File downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository,
1018 managedDefaultRepository.toMetadataPath(
1019 metadata ) ).getFile();
1020
1021 assertNull( downloadedFile );
1022 assertNoTempFiles( expectedFile );
1023 }
1024
1025
1026
1027
1028
1029
1030
1031 private void assertFetchVersioned( String requestedResource )
1032 throws Exception
1033 {
1034 File expectedFile = new File( managedDefaultDir, requestedResource );
1035
1036 VersionedReference metadata = createVersionedReference( requestedResource );
1037
1038 File downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository,
1039 managedDefaultRepository.toMetadataPath(
1040 metadata ) ).getFile();
1041
1042 assertNotNull( "Should have downloaded a file.", downloadedFile );
1043 assertNoTempFiles( expectedFile );
1044 }
1045
1046 private VersionedReference createVersionedReference( String path )
1047 throws RepositoryMetadataException
1048 {
1049 return metadataTools.toVersionedReference( path );
1050 }
1051
1052
1053
1054
1055
1056
1057
1058 private void assertFetchVersionedFailed( String requestedResource )
1059 throws Exception
1060 {
1061 File expectedFile = new File( managedDefaultDir, requestedResource );
1062 VersionedReference metadata = createVersionedReference( requestedResource );
1063
1064 File downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository,
1065 managedDefaultRepository.toMetadataPath(
1066 metadata ) ).getFile();
1067
1068 assertNull( downloadedFile );
1069 assertNoTempFiles( expectedFile );
1070 }
1071
1072
1073
1074
1075
1076
1077
1078 private void assertResourceExists( String requestedResource )
1079 throws Exception
1080 {
1081 File actualFile = new File( managedDefaultDir, requestedResource );
1082 assertTrue( "Resource should exist: " + requestedResource, actualFile.exists() );
1083 }
1084
1085 private void assertMetadataEquals( String expectedMetadataXml, File actualFile )
1086 throws Exception
1087 {
1088 assertNotNull( "Actual File should not be null.", actualFile );
1089
1090 assertTrue( "Actual file exists.", actualFile.exists() );
1091
1092 StringWriter actualContents = new StringWriter();
1093 ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( actualFile );
1094 RepositoryMetadataWriter.write( metadata, actualContents );
1095
1096 DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadataXml, actualContents.toString() ) );
1097 if ( !detailedDiff.similar() )
1098 {
1099 assertEquals( expectedMetadataXml, actualContents );
1100 }
1101
1102
1103 }
1104
1105
1106
1107
1108
1109
1110
1111 private void assertNoMetadata( String requestedResource )
1112 throws Exception
1113 {
1114 File expectedFile = new File( managedDefaultDir, requestedResource );
1115 assertFalse( "metadata should not exist: " + expectedFile, expectedFile.exists() );
1116 }
1117
1118
1119
1120
1121
1122
1123
1124
1125 private void assertNoRepoMetadata( String proxiedRepoId, String requestedResource )
1126 {
1127 String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource );
1128
1129 File actualFile = new File( managedDefaultDir, proxiedFile );
1130 assertFalse( "Repo specific metadata should not exist: " + actualFile, actualFile.exists() );
1131 }
1132
1133 private void assertGroupMetadataContents( String requestedResource, String expectedPlugins[] )
1134 throws Exception
1135 {
1136 File actualFile = new File( managedDefaultDir, requestedResource );
1137 assertTrue( "Snapshot Metadata should exist: " + requestedResource, actualFile.exists() );
1138
1139 ProjectReference actualMetadata = createGroupReference( requestedResource );
1140
1141 assertGroupMetadata( actualFile, actualMetadata, expectedPlugins );
1142 }
1143
1144 private ProjectReference createGroupReference( String requestedResource )
1145 throws RepositoryMetadataException
1146 {
1147 ProjectReference projectReference = createProjectReference( requestedResource );
1148 projectReference.setGroupId( projectReference.getGroupId() + "." + projectReference.getArtifactId() );
1149 projectReference.setArtifactId( null );
1150 return projectReference;
1151 }
1152
1153 private void assertRepoGroupMetadataContents( String proxiedRepoId, String requestedResource,
1154 String expectedPlugins[] )
1155 throws Exception
1156 {
1157 String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource );
1158
1159 File actualFile = new File( managedDefaultDir, proxiedFile );
1160 assertTrue( "Repo Specific Group Metadata should exist: " + requestedResource, actualFile.exists() );
1161
1162 ProjectReference actualMetadata = createGroupReference( requestedResource );
1163
1164 assertGroupMetadata( actualFile, actualMetadata, expectedPlugins );
1165 }
1166
1167 private void assertGroupMetadata( File actualFile, ProjectReference actualMetadata, String expectedPlugins[] )
1168 throws Exception
1169 {
1170
1171 StringWriter expectedMetadataXml = new StringWriter();
1172 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1173 m.setGroupId( actualMetadata.getGroupId() );
1174
1175 for ( String pluginId : expectedPlugins )
1176 {
1177 Plugin p = new Plugin();
1178 p.setPrefix( pluginId );
1179 p.setArtifactId( pluginId + "-maven-plugin" );
1180 p.setName( "The " + pluginId + " Plugin" );
1181 m.getPlugins().add( p );
1182 }
1183
1184 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1185
1186
1187 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1188 }
1189
1190
1191
1192
1193
1194
1195
1196
1197 private void assertProjectMetadataContents( String requestedResource, String expectedVersions[],
1198 String latestVersion, String releaseVersion )
1199 throws Exception
1200 {
1201 File actualFile = new File( managedDefaultDir, requestedResource );
1202 assertTrue( actualFile.exists() );
1203
1204 ProjectReference metadata = createProjectReference( requestedResource );
1205
1206
1207 StringWriter expectedMetadataXml = new StringWriter();
1208 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1209 m.setGroupId( metadata.getGroupId() );
1210 m.setArtifactId( metadata.getArtifactId() );
1211 m.setLatestVersion( latestVersion );
1212 m.setReleasedVersion( releaseVersion );
1213
1214 if ( expectedVersions != null )
1215 {
1216 m.getAvailableVersions().addAll( Arrays.asList( expectedVersions ) );
1217 }
1218
1219 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1220
1221
1222 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1223 }
1224
1225
1226
1227
1228
1229
1230
1231
1232 private void assertReleaseMetadataContents( String requestedResource )
1233 throws Exception
1234 {
1235 File actualFile = new File( managedDefaultDir, requestedResource );
1236 assertTrue( "Release Metadata should exist: " + requestedResource, actualFile.exists() );
1237
1238 VersionedReference metadata = createVersionedReference( requestedResource );
1239
1240
1241 StringWriter expectedMetadataXml = new StringWriter();
1242 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1243 m.setGroupId( metadata.getGroupId() );
1244 m.setArtifactId( metadata.getArtifactId() );
1245 m.setVersion( metadata.getVersion() );
1246 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1247
1248
1249 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1250 }
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262 private void assertSnapshotMetadataContents( String requestedResource, String expectedDate, String expectedTime,
1263 int expectedBuildnumber )
1264 throws Exception
1265 {
1266 File actualFile = new File( managedDefaultDir, requestedResource );
1267 assertTrue( "Snapshot Metadata should exist: " + requestedResource, actualFile.exists() );
1268
1269 VersionedReference actualMetadata = createVersionedReference( requestedResource );
1270
1271 assertSnapshotMetadata( actualFile, actualMetadata, expectedDate, expectedTime, expectedBuildnumber );
1272 }
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285 private void assertRepoSnapshotMetadataContents( String proxiedRepoId, String requestedResource,
1286 String expectedDate, String expectedTime, int expectedBuildnumber )
1287 throws Exception
1288 {
1289 String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource );
1290
1291 File actualFile = new File( managedDefaultDir, proxiedFile );
1292 assertTrue( "Repo Specific Snapshot Metadata should exist: " + requestedResource, actualFile.exists() );
1293
1294 VersionedReference actualMetadata = createVersionedReference( requestedResource );
1295
1296 assertSnapshotMetadata( actualFile, actualMetadata, expectedDate, expectedTime, expectedBuildnumber );
1297 }
1298
1299 private void assertSnapshotMetadata( File actualFile, VersionedReference actualMetadata, String expectedDate,
1300 String expectedTime, int expectedBuildnumber )
1301 throws RepositoryMetadataException, Exception
1302 {
1303
1304 StringWriter expectedMetadataXml = new StringWriter();
1305 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1306 m.setGroupId( actualMetadata.getGroupId() );
1307 m.setArtifactId( actualMetadata.getArtifactId() );
1308 m.setVersion( VersionUtil.getBaseVersion( actualMetadata.getVersion() ) );
1309
1310 m.setSnapshotVersion( new SnapshotVersion() );
1311
1312 if ( StringUtils.isNotBlank( expectedDate ) && StringUtils.isNotBlank( expectedTime ) )
1313 {
1314 m.getSnapshotVersion().setTimestamp( expectedDate + "." + expectedTime );
1315 }
1316
1317 m.getSnapshotVersion().setBuildNumber( expectedBuildnumber );
1318
1319 m.setLastUpdated( expectedDate + expectedTime );
1320
1321 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1322
1323
1324 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1325 }
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335 private void assertRepoProjectMetadata( String proxiedRepoId, String requestedResource,
1336 String[] expectedProxyVersions )
1337 throws Exception
1338 {
1339 String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource );
1340
1341 File actualFile = new File( managedDefaultDir, proxiedFile );
1342 assertTrue( actualFile.exists() );
1343
1344 ProjectReference metadata = createProjectReference( requestedResource );
1345
1346
1347 StringWriter expectedMetadataXml = new StringWriter();
1348 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1349 m.setGroupId( metadata.getGroupId() );
1350 m.setArtifactId( metadata.getArtifactId() );
1351
1352 if ( expectedProxyVersions != null )
1353 {
1354 m.getAvailableVersions().addAll( Arrays.asList( expectedProxyVersions ) );
1355 }
1356
1357 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1358
1359
1360 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1361 }
1362
1363
1364
1365
1366
1367
1368
1369
1370 private void assertRepoReleaseMetadataContents( String proxiedRepoId, String requestedResource )
1371 throws Exception
1372 {
1373 String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource );
1374
1375 File actualFile = new File( managedDefaultDir, proxiedFile );
1376 assertTrue( "Release metadata for repo should exist: " + actualFile, actualFile.exists() );
1377
1378 VersionedReference metadata = createVersionedReference( requestedResource );
1379
1380
1381 StringWriter expectedMetadataXml = new StringWriter();
1382 ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
1383 m.setGroupId( metadata.getGroupId() );
1384 m.setArtifactId( metadata.getArtifactId() );
1385 m.setVersion( metadata.getVersion() );
1386 RepositoryMetadataWriter.write( m, expectedMetadataXml );
1387
1388
1389 assertMetadataEquals( expectedMetadataXml.toString(), actualFile );
1390 }
1391
1392
1393
1394
1395
1396
1397
1398 private void assertResourceNotFound( String requestedResource )
1399 throws Exception
1400 {
1401 File actualFile = new File( managedDefaultDir, requestedResource );
1402 assertFalse( "Resource should not exist: " + requestedResource, actualFile.exists() );
1403 }
1404
1405 }