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

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