View Javadoc

1   package org.apache.maven.archiva.proxy;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.commons.io.FileUtils;
23  import org.apache.maven.archiva.model.ArtifactReference;
24  import org.apache.maven.archiva.policies.CachedFailuresPolicy;
25  import org.apache.maven.archiva.policies.ChecksumPolicy;
26  import org.apache.maven.archiva.policies.ReleasesPolicy;
27  import org.apache.maven.archiva.policies.SnapshotsPolicy;
28  import org.apache.maven.wagon.ResourceDoesNotExistException;
29  
30  import java.io.File;
31  
32  /**
33   * ChecksumTransferTest
34   *
35   * @version $Id: ChecksumTransferTest.java 718864 2008-11-19 06:33:35Z brett $
36   */
37  public class ChecksumTransferTest
38      extends AbstractProxyTestCase
39  {
40      public void testGetChecksumWhenConnectorIsDisabled()
41          throws Exception
42      {
43          String path = "org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar";
44          setupTestableManagedRepository( path );
45  
46          File expectedFile = new File( managedDefaultDir, path );
47          ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
48  
49          FileUtils.deleteDirectory( expectedFile.getParentFile() );
50          assertFalse( expectedFile.exists() );
51  
52          // Configure Connector (usually done within archiva.xml configuration)
53          saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
54                         SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, true );
55          
56          File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
57          
58          assertNull(downloadedFile);
59      }
60      
61      public void testGetChecksumBothCorrect()
62          throws Exception
63      {
64          String path = "org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar";
65          setupTestableManagedRepository( path );
66  
67          File expectedFile = new File( managedDefaultDir, path );
68          ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
69  
70          FileUtils.deleteDirectory( expectedFile.getParentFile() );
71          assertFalse( expectedFile.exists() );
72  
73          // Configure Connector (usually done within archiva.xml configuration)
74          saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
75                         SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
76  
77          File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
78  
79          File proxied1File = new File( REPOPATH_PROXIED1, path );
80          assertFileEquals( expectedFile, downloadedFile, proxied1File );
81          assertNoTempFiles( expectedFile );
82          assertChecksums( expectedFile, "066d76e459f7782c312c31e8a11b3c0f1e3e43a7 *get-checksum-both-right-1.0.jar",
83                           "e58f30c6a150a2e843552438d18e15cb *get-checksum-both-right-1.0.jar" );
84      }
85  
86      public void testGetChecksumCorrectSha1NoMd5()
87          throws Exception
88      {
89          String path = "org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar";
90          setupTestableManagedRepository( path );
91  
92          File expectedFile = new File( managedDefaultDir, path );
93          ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
94  
95          FileUtils.deleteDirectory( expectedFile.getParentFile() );
96          assertFalse( expectedFile.exists() );
97  
98          // Configure Connector (usually done within archiva.xml configuration)
99          saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
100                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
101 
102         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
103 
104         File proxied1File = new File( REPOPATH_PROXIED1, path );
105         assertFileEquals( expectedFile, downloadedFile, proxied1File );
106         assertNoTempFiles( expectedFile );
107         assertChecksums( expectedFile, "748a3a013bf5eacf2bbb40a2ac7d37889b728837 *get-checksum-sha1-only-1.0.jar",
108                          null );
109     }
110 
111     public void testGetChecksumNoSha1CorrectMd5()
112         throws Exception
113     {
114         String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar";
115         setupTestableManagedRepository( path );
116 
117         File expectedFile = new File( managedDefaultDir, path );
118         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
119 
120         FileUtils.deleteDirectory( expectedFile.getParentFile() );
121         assertFalse( expectedFile.exists() );
122 
123         // Configure Connector (usually done within archiva.xml configuration)
124         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
125                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
126 
127         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
128 
129         File proxied1File = new File( REPOPATH_PROXIED1, path );
130         assertFileEquals( expectedFile, downloadedFile, proxied1File );
131         assertNoTempFiles( expectedFile );
132         assertChecksums( expectedFile, null, "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" );
133     }
134 
135     public void testGetWithNoChecksumsUsingIgnoredSetting()
136         throws Exception
137     {
138         String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
139         setupTestableManagedRepository( path );
140 
141         File expectedFile = new File( managedDefaultDir, path );
142         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
143 
144         FileUtils.deleteDirectory( expectedFile.getParentFile() );
145         assertFalse( expectedFile.exists() );
146 
147         // Configure Connector (usually done within archiva.xml configuration)
148         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
149                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
150 
151         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
152 
153         File proxied1File = new File( REPOPATH_PROXIED1, path );
154         assertFileEquals( expectedFile, downloadedFile, proxied1File );
155         assertNoTempFiles( expectedFile );
156         assertChecksums( expectedFile, null, null );
157     }
158 
159     public void testGetChecksumBadSha1BadMd5IgnoredSetting()
160         throws Exception
161     {
162         String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar";
163         setupTestableManagedRepository( path );
164 
165         File expectedFile = new File( managedDefaultDir, path );
166         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
167 
168         FileUtils.deleteDirectory( expectedFile.getParentFile() );
169         assertFalse( expectedFile.exists() );
170 
171         // Configure Connector (usually done within archiva.xml configuration)
172         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
173                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
174 
175         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
176 
177         File proxied1File = new File( REPOPATH_PROXIED1, path );
178         assertFileEquals( expectedFile, downloadedFile, proxied1File );
179         assertNoTempFiles( expectedFile );
180         assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" );
181     }
182 
183     public void testGetChecksumBadSha1BadMd5FailSetting()
184         throws Exception
185     {
186         String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar";
187         setupTestableManagedRepository( path );
188 
189         File expectedFile = new File( managedDefaultDir, path );
190         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
191 
192         FileUtils.deleteDirectory( expectedFile.getParentFile() );
193         assertFalse( expectedFile.exists() );
194 
195         // Configure Connector (usually done within archiva.xml configuration)
196         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS,
197                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
198 
199         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
200 
201         assertNotDownloaded( downloadedFile );
202         assertChecksums( expectedFile, null, null );
203     }
204 
205     public void testGetChecksumBadSha1BadMd5FixSetting()
206         throws Exception
207     {
208         String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar";
209         setupTestableManagedRepository( path );
210 
211         File expectedFile = new File( managedDefaultDir, path );
212         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
213 
214         FileUtils.deleteDirectory( expectedFile.getParentFile() );
215         assertFalse( expectedFile.exists() );
216 
217         // Configure Connector (usually done within archiva.xml configuration)
218         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
219                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
220 
221         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
222 
223         File proxied1File = new File( REPOPATH_PROXIED1, path );
224         assertFileEquals( expectedFile, downloadedFile, proxied1File );
225         assertNoTempFiles( expectedFile );
226         assertChecksums( expectedFile, "4ec20a12dc91557330bd0b39d1805be5e329ae56  get-checksum-both-bad-1.0.jar",
227                          "a292491a35925465e693a44809a078b5  get-checksum-both-bad-1.0.jar" );
228     }
229 
230     public void testGetChecksumCorrectSha1BadMd5UsingFailSetting()
231         throws Exception
232     {
233         String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar";
234         setupTestableManagedRepository( path );
235 
236         File expectedFile = new File( managedDefaultDir, path );
237         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
238 
239         FileUtils.deleteDirectory( expectedFile.getParentFile() );
240         assertFalse( expectedFile.exists() );
241 
242         // Configure Connector (usually done within archiva.xml configuration)
243         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS,
244                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
245 
246         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
247 
248         assertNotDownloaded( downloadedFile );
249         assertChecksums( expectedFile, null, null );
250     }
251 
252     public void testGetChecksumNoSha1CorrectMd5UsingFailSetting()
253         throws Exception
254     {
255         String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar";
256         setupTestableManagedRepository( path );
257 
258         File expectedFile = new File( managedDefaultDir, path );
259         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
260 
261         FileUtils.deleteDirectory( expectedFile.getParentFile() );
262         assertFalse( expectedFile.exists() );
263 
264         // Configure Connector (usually done within archiva.xml configuration)
265         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS,
266                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
267 
268         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
269 
270         // This is a success situation. No SHA1 with a Good MD5.
271         File proxied1File = new File( REPOPATH_PROXIED1, path );
272         assertFileEquals( expectedFile, downloadedFile, proxied1File );
273         assertNoTempFiles( expectedFile );
274         assertChecksums( expectedFile, null, "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" );
275     }
276 
277     public void testGetWithNoChecksumsUsingFailSetting()
278         throws Exception
279     {
280         String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
281         setupTestableManagedRepository( path );
282 
283         File expectedFile = new File( managedDefaultDir, path );
284         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
285 
286         FileUtils.deleteDirectory( expectedFile.getParentFile() );
287         assertFalse( expectedFile.exists() );
288 
289         // Configure Connector (usually done within archiva.xml configuration)
290         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS,
291                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
292 
293         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
294 
295         assertNotDownloaded( downloadedFile );
296         assertChecksums( expectedFile, null, null );
297     }
298 
299     public void testGetChecksumCorrectSha1BadMd5UsingIgnoredSetting()
300         throws Exception
301     {
302         String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar";
303         setupTestableManagedRepository( path );
304 
305         File expectedFile = new File( managedDefaultDir, path );
306         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
307 
308         FileUtils.deleteDirectory( expectedFile.getParentFile() );
309         assertFalse( expectedFile.exists() );
310 
311         // Configure Connector (usually done within archiva.xml configuration)
312         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
313                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
314 
315         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
316 
317         File proxied1File = new File( REPOPATH_PROXIED1, path );
318         assertFileEquals( expectedFile, downloadedFile, proxied1File );
319         assertNoTempFiles( expectedFile );
320         assertChecksums( expectedFile, "3dd1a3a57b807d3ef3fbc6013d926c891cbb8670 *get-checksum-sha1-bad-md5-1.0.jar",
321                          "invalid checksum file" );
322     }
323 
324     public void testGetChecksumCorrectSha1BadMd5UsingFixSetting()
325         throws Exception
326     {
327         String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar";
328         setupTestableManagedRepository( path );
329 
330         File expectedFile = new File( managedDefaultDir, path );
331         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
332 
333         FileUtils.deleteDirectory( expectedFile.getParentFile() );
334         assertFalse( expectedFile.exists() );
335 
336         // Configure Connector (usually done within archiva.xml configuration)
337         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
338                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
339 
340         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
341 
342         File proxied1File = new File( REPOPATH_PROXIED1, path );
343         assertFileEquals( expectedFile, downloadedFile, proxied1File );
344         assertNoTempFiles( expectedFile );
345         assertChecksums( expectedFile, "3dd1a3a57b807d3ef3fbc6013d926c891cbb8670 *get-checksum-sha1-bad-md5-1.0.jar",
346                          "c35f3b76268b73a4ba617f6f275c49ab  get-checksum-sha1-bad-md5-1.0.jar" );
347     }
348 
349     public void testGetChecksumNoSha1CorrectMd5UsingFixSetting()
350         throws Exception
351     {
352         String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar";
353         setupTestableManagedRepository( path );
354 
355         File expectedFile = new File( managedDefaultDir, path );
356         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
357 
358         FileUtils.deleteDirectory( expectedFile.getParentFile() );
359         assertFalse( expectedFile.exists() );
360 
361         // Configure Connector (usually done within archiva.xml configuration)
362         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
363                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
364 
365         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
366 
367         File proxied1File = new File( REPOPATH_PROXIED1, path );
368         assertFileEquals( expectedFile, downloadedFile, proxied1File );
369         assertNoTempFiles( expectedFile );
370         assertChecksums( expectedFile, "71f7dc3f72053a3f2d9fdd6fef9db055ef957ffb  get-checksum-md5-only-1.0.jar",
371                          "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" );
372     }
373 
374     public void testGetWithNoChecksumsUsingFixSetting()
375         throws Exception
376     {
377         String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
378         setupTestableManagedRepository( path );
379 
380         File expectedFile = new File( managedDefaultDir, path );
381         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
382 
383         FileUtils.deleteDirectory( expectedFile.getParentFile() );
384         assertFalse( expectedFile.exists() );
385 
386         // Configure Connector (usually done within archiva.xml configuration)
387         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
388                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false );
389 
390         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
391 
392         File proxied1File = new File( REPOPATH_PROXIED1, path );
393         assertFileEquals( expectedFile, downloadedFile, proxied1File );
394         assertNoTempFiles( expectedFile );
395         assertChecksums( expectedFile, "1f12821c5e43e1a0b76b9564a6ddb0548ccb9486  get-default-layout-1.0.jar",
396                          "3f7341545f21226b6f49a3c2704cb9be  get-default-layout-1.0.jar" );
397     }
398 
399     public void testGetChecksumNotFoundOnRemote()
400         throws Exception
401     {
402         String path = "org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar";
403         setupTestableManagedRepository( path );
404 
405         File expectedFile = new File( managedDefaultDir, path );
406         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
407 
408         FileUtils.deleteDirectory( expectedFile.getParentFile() );
409         assertFalse( expectedFile.getParentFile().exists() );
410         assertFalse( expectedFile.exists() );
411 
412         saveRemoteRepositoryConfig( "badproxied", "Bad Proxied", "test://bad.machine.com/repo/", "default" );
413 
414         // Configure Connector (usually done within archiva.xml configuration)
415         saveConnector( ID_DEFAULT_MANAGED, "badproxied", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
416                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false  );
417 
418         wagonMock.get( path, new File( expectedFile.getAbsolutePath() + ".tmp" ) );
419         wagonMockControl.setMatcher(customWagonGetMatcher);
420         wagonMockControl.setVoidCallable();
421         wagonMock.get( path + ".sha1", new File( expectedFile.getAbsolutePath() + ".sha1.tmp" ) );
422         wagonMockControl.setMatcher(customWagonGetMatcher);
423         wagonMockControl.setVoidCallable();
424         wagonMock.get( path + ".md5", new File( expectedFile.getAbsolutePath() + ".md5.tmp" ) );
425         wagonMockControl.setMatcher(customWagonGetMatcher);
426         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Resource does not exist." ) );
427         wagonMockControl.replay();
428 
429         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
430 
431         wagonMockControl.verify();
432 
433         // Do what the mock doesn't do.
434         String proxyPath = new File( REPOPATH_PROXIED1, path ).getAbsolutePath();
435         String localPath = new File( managedDefaultDir, path ).getAbsolutePath();
436         FileUtils.copyFile( new File( proxyPath ), new File( localPath ) );
437         FileUtils.copyFile( new File( proxyPath + ".sha1" ), new File( localPath + ".sha1" ) );
438 
439         // Test results.
440         File proxied1File = new File( REPOPATH_PROXIED1, path );
441         assertFileEquals( expectedFile, downloadedFile, proxied1File );
442         assertNoTempFiles( expectedFile );
443         assertChecksums( expectedFile, "748a3a013bf5eacf2bbb40a2ac7d37889b728837 *get-checksum-sha1-only-1.0.jar",
444                          null );
445     }
446 
447     public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingIgnoredSetting()
448         throws Exception
449     {
450         String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar";
451         setupTestableManagedRepository( path );
452 
453         File expectedFile = new File( managedDefaultDir, path );
454         File remoteFile = new File( REPOPATH_PROXIED1, path );
455         
456         setManagedOlderThanRemote( expectedFile, remoteFile );
457 
458         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
459 
460         // Configure Connector (usually done within archiva.xml configuration)
461         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
462                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO , false );
463 
464         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
465 
466         File proxied1File = new File( REPOPATH_PROXIED1, path );
467         assertFileEquals( expectedFile, downloadedFile, proxied1File );
468         assertNoTempFiles( expectedFile );
469         // There are no hashcodes on the proxy side to download, hence the local ones should remain invalid.
470         assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" );
471     }
472 
473     public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingFailSetting()
474         throws Exception
475     {
476         String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar";
477         setupTestableManagedRepository( path );
478 
479         File expectedFile = new File( managedDefaultDir, path );
480         File remoteFile = new File( REPOPATH_PROXIED1, path );
481 
482         setManagedOlderThanRemote( expectedFile, remoteFile );
483         
484         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
485 
486         // Configure Connector (usually done within archiva.xml configuration)
487         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS,
488                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO , false );
489 
490         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
491 
492         assertNotDownloaded( downloadedFile );
493         assertNoTempFiles( expectedFile );
494         // There are no hashcodes on the proxy side to download.
495         // The FAIL policy will delete the checksums as bad.
496         
497         assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" );
498     }
499 
500     public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingFixSetting()
501         throws Exception
502     {
503         String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar";
504         setupTestableManagedRepository( path );
505 
506         File expectedFile = new File( managedDefaultDir, path );
507         File remoteFile = new File( REPOPATH_PROXIED1, path );
508         
509         setManagedOlderThanRemote( expectedFile, remoteFile );
510 
511         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
512 
513         // Configure Connector (usually done within archiva.xml configuration)
514         saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
515                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO , false );
516 
517         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
518 
519         File proxied1File = new File( REPOPATH_PROXIED1, path );
520         assertFileEquals( expectedFile, downloadedFile, proxied1File );
521         assertNoTempFiles( expectedFile );
522         assertChecksums( expectedFile, "96a08dc80a108cba8efd3b20aec91b32a0b2cbd4  get-bad-local-checksum-1.0.jar",
523                          "46fdd6ca55bf1d7a7eb0c858f41e0ccd  get-bad-local-checksum-1.0.jar" );
524     }
525 }