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