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