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.policies.CachedFailuresPolicy;
23 import org.apache.archiva.policies.ChecksumPolicy;
24 import org.apache.archiva.policies.PropagateErrorsDownloadPolicy;
25 import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
26 import org.apache.archiva.policies.ProxyDownloadException;
27 import org.apache.archiva.policies.ReleasesPolicy;
28 import org.apache.archiva.policies.SnapshotsPolicy;
29 import org.apache.archiva.repository.layout.LayoutException;
30 import org.apache.maven.wagon.ResourceDoesNotExistException;
31 import org.apache.maven.wagon.TransferFailedException;
32 import org.apache.maven.wagon.authorization.AuthorizationException;
33 import org.easymock.EasyMock;
34 import org.junit.Test;
35
36 import java.io.File;
37
38 import static org.junit.Assert.*;
39
40
41
42
43
44
45 public class ErrorHandlingTest
46 extends AbstractProxyTestCase
47 {
48 private static final String PATH_IN_BOTH_REMOTES_NOT_LOCAL =
49 "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar";
50
51 private static final String PATH_IN_BOTH_REMOTES_AND_LOCAL =
52 "org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom";
53
54 private static final String ID_MOCKED_PROXIED1 = "badproxied1";
55
56 private static final String NAME_MOCKED_PROXIED1 = "Bad Proxied 1";
57
58 private static final String ID_MOCKED_PROXIED2 = "badproxied2";
59
60 private static final String NAME_MOCKED_PROXIED2 = "Bad Proxied 2";
61
62 @Test
63 public void testPropagateErrorImmediatelyWithErrorThenSuccess()
64 throws Exception
65 {
66 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
67 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
68
69 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
70 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false );
71
72 simulateGetError( path, expectedFile, createTransferException() );
73
74 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
75 }
76
77 @Test
78 public void testPropagateErrorImmediatelyWithNotFoundThenError()
79 throws Exception
80 {
81 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
82 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
83
84 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
85 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP );
86
87 simulateGetError( path, expectedFile, createResourceNotFoundException() );
88
89 simulateGetError( path, expectedFile, createTransferException() );
90
91 confirmSingleFailure( path, ID_MOCKED_PROXIED2 );
92 }
93
94 @Test
95 public void testPropagateErrorImmediatelyWithSuccessThenError()
96 throws Exception
97 {
98 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
99 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
100
101 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false );
102
103 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP );
104
105 confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
106 }
107
108 @Test
109 public void testPropagateErrorImmediatelyWithNotFoundThenSuccess()
110 throws Exception
111 {
112 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
113 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
114
115 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
116
117 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false );
118
119 simulateGetError( path, expectedFile, createResourceNotFoundException() );
120
121 confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
122 }
123
124 @Test
125 public void testPropagateErrorAtEndWithErrorThenSuccess()
126 throws Exception
127 {
128 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
129 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
130
131 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
132
133 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false );
134
135 simulateGetError( path, expectedFile, createTransferException() );
136
137 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
138 }
139
140 @Test
141 public void testPropagateErrorAtEndWithSuccessThenError()
142 throws Exception
143 {
144 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
145 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
146
147 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false );
148
149 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
150
151 confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
152 }
153
154 @Test
155 public void testPropagateErrorAtEndWithNotFoundThenError()
156 throws Exception
157 {
158 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
159 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
160
161 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
162
163 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
164
165 simulateGetError( path, expectedFile, createResourceNotFoundException() );
166
167 simulateGetError( path, expectedFile, createTransferException() );
168
169 confirmSingleFailure( path, ID_MOCKED_PROXIED2 );
170 }
171
172 @Test
173 public void testPropagateErrorAtEndWithErrorThenNotFound()
174 throws Exception
175 {
176 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
177 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
178
179 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
180
181 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
182
183 simulateGetError( path, expectedFile, createTransferException() );
184
185 simulateGetError( path, expectedFile, createResourceNotFoundException() );
186
187 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
188 }
189
190 @Test
191 public void testPropagateErrorAtEndWithErrorThenError()
192 throws Exception
193 {
194 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
195 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
196
197 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
198
199 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
200
201 simulateGetError( path, expectedFile, createTransferException() );
202
203 simulateGetError( path, expectedFile, createTransferException() );
204
205 confirmFailures( path, new String[]{ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2} );
206 }
207
208 @Test
209 public void testPropagateErrorAtEndWithNotFoundThenSuccess()
210 throws Exception
211 {
212 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
213 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
214
215 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
216
217 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false );
218
219 simulateGetError( path, expectedFile, createResourceNotFoundException() );
220
221 confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
222 }
223
224 @Test
225 public void testIgnoreErrorWithErrorThenSuccess()
226 throws Exception
227 {
228 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
229 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
230
231 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
232
233 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false );
234
235 simulateGetError( path, expectedFile, createTransferException() );
236
237 confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
238 }
239
240 @Test
241 public void testIgnoreErrorWithSuccessThenError()
242 throws Exception
243 {
244 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
245 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
246
247 saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false );
248
249 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
250
251 confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
252 }
253
254 @Test
255 public void testIgnoreErrorWithNotFoundThenError()
256 throws Exception
257 {
258 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
259 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
260
261 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
262
263 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
264
265 simulateGetError( path, expectedFile, createResourceNotFoundException() );
266
267 simulateGetError( path, expectedFile, createTransferException() );
268
269 confirmNotDownloadedNoError( path );
270 }
271
272 @Test
273 public void testIgnoreErrorWithErrorThenNotFound()
274 throws Exception
275 {
276 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
277 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
278
279 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
280
281 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
282
283 simulateGetError( path, expectedFile, createTransferException() );
284
285 simulateGetError( path, expectedFile, createResourceNotFoundException() );
286
287 confirmNotDownloadedNoError( path );
288 }
289
290 @Test
291 public void testIgnoreErrorWithErrorThenError()
292 throws Exception
293 {
294 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
295 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
296
297 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
298
299 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
300
301 simulateGetError( path, expectedFile, createTransferException() );
302
303 simulateGetError( path, expectedFile, createTransferException() );
304
305 confirmNotDownloadedNoError( path );
306 }
307
308 @Test
309 public void testPropagateOnUpdateAlwaysArtifactNotPresent()
310 throws Exception
311 {
312 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
313 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
314
315 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
316 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
317 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
318 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
319
320 simulateGetError( path, expectedFile, createTransferException() );
321
322 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
323 }
324
325 @Test
326 public void testPropagateOnUpdateAlwaysArtifactPresent()
327 throws Exception
328 {
329 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
330 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
331
332 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
333 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
334 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
335 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
336
337 simulateGetIfNewerError( path, expectedFile, createTransferException() );
338
339 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
340 }
341
342 @Test
343 public void testPropagateOnUpdateAlwaysQueueArtifactNotPresent()
344 throws Exception
345 {
346 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
347 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
348
349 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
350 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
351 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
352 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
353
354 simulateGetError( path, expectedFile, createTransferException() );
355 simulateGetError( path, expectedFile, createTransferException() );
356
357 confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
358 }
359
360 @Test
361 public void testPropagateOnUpdateAlwaysQueueArtifactPresent()
362 throws Exception
363 {
364 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
365 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
366
367 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
368 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
369 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
370 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
371
372 simulateGetIfNewerError( path, expectedFile, createTransferException() );
373 simulateGetIfNewerError( path, expectedFile, createTransferException() );
374
375 confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
376 }
377
378 @Test
379 public void testPropagateOnUpdateAlwaysIgnoreArtifactNotPresent()
380 throws Exception
381 {
382 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
383 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
384
385 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
386 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
387 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
388 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
389
390 simulateGetError( path, expectedFile, createTransferException() );
391 simulateGetError( path, expectedFile, createTransferException() );
392
393 confirmNotDownloadedNoError( path );
394 }
395
396 @Test
397 public void testPropagateOnUpdateAlwaysIgnoreArtifactPresent()
398 throws Exception
399 {
400 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
401 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
402
403 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
404 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
405 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
406 PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
407
408 simulateGetIfNewerError( path, expectedFile, createTransferException() );
409 simulateGetIfNewerError( path, expectedFile, createTransferException() );
410
411 confirmNotDownloadedNoError( path );
412 assertTrue( expectedFile.exists() );
413 }
414
415 @Test
416 public void testPropagateOnUpdateNotPresentArtifactNotPresent()
417 throws Exception
418 {
419 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
420 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
421
422 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
423 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
424 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
425 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
426
427 simulateGetError( path, expectedFile, createTransferException() );
428
429 confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
430 }
431
432 @Test
433 public void testPropagateOnUpdateNotPresentArtifactPresent()
434 throws Exception
435 {
436 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
437 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
438
439 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
440 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
441 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
442 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
443
444 simulateGetIfNewerError( path, expectedFile, createTransferException() );
445
446 confirmNotDownloadedNoError( path );
447 assertTrue( expectedFile.exists() );
448 }
449
450 @Test
451 public void testPropagateOnUpdateNotPresentQueueArtifactNotPresent()
452 throws Exception
453 {
454 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
455 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
456
457 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
458 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
459 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
460 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
461
462 simulateGetError( path, expectedFile, createTransferException() );
463 simulateGetError( path, expectedFile, createTransferException() );
464
465 confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
466 }
467
468 @Test
469 public void testPropagateOnUpdateNotPresentQueueArtifactPresent()
470 throws Exception
471 {
472 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
473 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
474
475 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
476 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
477 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
478 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
479
480 simulateGetIfNewerError( path, expectedFile, createTransferException() );
481 simulateGetIfNewerError( path, expectedFile, createTransferException() );
482
483 confirmNotDownloadedNoError( path );
484 assertTrue( expectedFile.exists() );
485 }
486
487 @Test
488 public void testPropagateOnUpdateNotPresentIgnoreArtifactNotPresent()
489 throws Exception
490 {
491 String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
492 File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
493
494 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
495 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
496 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
497 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
498
499 simulateGetError( path, expectedFile, createTransferException() );
500 simulateGetError( path, expectedFile, createTransferException() );
501
502 confirmNotDownloadedNoError( path );
503 }
504
505 @Test
506 public void testPropagateOnUpdateNotPresentIgnoreArtifactPresent()
507 throws Exception
508 {
509 String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
510 File expectedFile = setupRepositoriesWithLocalFilePresent( path );
511
512 createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
513 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
514 createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
515 PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
516
517 simulateGetIfNewerError( path, expectedFile, createTransferException() );
518 simulateGetIfNewerError( path, expectedFile, createTransferException() );
519
520 confirmNotDownloadedNoError( path );
521 assertTrue( expectedFile.exists() );
522 }
523
524
525
526
527
528 private void createMockedProxyConnector( String id, String name, String errorPolicy )
529 {
530 saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
531 saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,
532 CachedFailuresPolicy.NO, errorPolicy, false );
533 }
534
535 private void createMockedProxyConnector( String id, String name, String errorPolicy, String errorOnUpdatePolicy )
536 {
537 saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
538 saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,
539 CachedFailuresPolicy.NO, errorPolicy, errorOnUpdatePolicy, false );
540 }
541
542 private File setupRepositoriesWithLocalFileNotPresent( String path )
543 throws Exception
544 {
545 setupTestableManagedRepository( path );
546
547 File file = new File( managedDefaultDir, path );
548
549 assertNotExistsInManagedDefaultRepo( file );
550
551 return file;
552 }
553
554 private File setupRepositoriesWithLocalFilePresent( String path )
555 throws Exception
556 {
557 setupTestableManagedRepository( path );
558
559 File file = new File( managedDefaultDir, path );
560
561 assertTrue( file.exists() );
562
563 return file;
564 }
565
566 private void simulateGetError( String path, File expectedFile, Exception throwable )
567 throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
568 {
569 wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class ));
570 EasyMock.expectLastCall().andThrow(throwable );
571 }
572
573 private void simulateGetIfNewerError( String path, File expectedFile, TransferFailedException exception )
574 throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
575 {
576 wagonMock.getIfNewer( EasyMock.eq( path ), EasyMock.anyObject( File.class ), EasyMock.eq( expectedFile.lastModified() ));
577 EasyMock.expectLastCall().andThrow( exception );
578 }
579
580 private File createExpectedTempFile( File expectedFile )
581 {
582 return new File( managedDefaultDir, expectedFile.getName() + ".tmp" ).getAbsoluteFile();
583 }
584
585 private void confirmSingleFailure( String path, String id )
586 throws LayoutException
587 {
588 confirmFailures( path, new String[]{id} );
589 }
590
591 private void confirmFailures( String path, String[] ids )
592 throws LayoutException
593 {
594 wagonMockControl.replay();
595
596
597 File downloadedFile = null;
598 try
599 {
600 downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository,
601 managedDefaultRepository.toArtifactReference( path ) );
602 fail( "Proxy should not have succeeded" );
603 }
604 catch ( ProxyDownloadException e )
605 {
606 assertEquals( ids.length, e.getFailures().size() );
607 for ( String id : ids )
608 {
609 assertTrue( e.getFailures().keySet().contains( id ) );
610 }
611 }
612
613 wagonMockControl.verify();
614
615 assertNotDownloaded( downloadedFile );
616 }
617
618 private void confirmSuccess( String path, File expectedFile, String basedir )
619 throws Exception
620 {
621 File downloadedFile = performDownload( path );
622
623 File proxied1File = new File( basedir, path );
624 assertFileEquals( expectedFile, downloadedFile, proxied1File );
625 }
626
627 private void confirmNotDownloadedNoError( String path )
628 throws Exception
629 {
630 File downloadedFile = performDownload( path );
631
632 assertNotDownloaded( downloadedFile );
633 }
634
635 private File performDownload( String path )
636 throws ProxyDownloadException, LayoutException
637 {
638 wagonMockControl.replay();
639
640
641 File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository,
642 managedDefaultRepository.toArtifactReference( path ) );
643
644 wagonMockControl.verify();
645 return downloadedFile;
646 }
647
648 private static TransferFailedException createTransferException()
649 {
650 return new TransferFailedException( "test download exception" );
651 }
652
653 private static ResourceDoesNotExistException createResourceNotFoundException()
654 {
655 return new ResourceDoesNotExistException( "test download not found" );
656 }
657 }