You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ChecksumTransferTest.java 25KB

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