XML2SAXMetalinkProcessorTest.cc 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. #include "XML2SAXMetalinkProcessor.h"
  2. #include "MetalinkParserStateMachine.h"
  3. #include "Exception.h"
  4. #include "DefaultDiskWriter.h"
  5. #include "ByteArrayDiskWriter.h"
  6. #include <cppunit/extensions/HelperMacros.h>
  7. class XML2SAXMetalinkProcessorTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(XML2SAXMetalinkProcessorTest);
  9. CPPUNIT_TEST(testParseFile);
  10. CPPUNIT_TEST(testParseFromBinaryStream);
  11. CPPUNIT_TEST(testMalformedXML);
  12. CPPUNIT_TEST(testMalformedXML2);
  13. CPPUNIT_TEST(testBadSize);
  14. CPPUNIT_TEST(testBadMaxConn);
  15. CPPUNIT_TEST(testNoName);
  16. CPPUNIT_TEST(testBadURLPrefs);
  17. CPPUNIT_TEST(testBadURLMaxConn);
  18. #ifdef ENABLE_MESSAGE_DIGEST
  19. CPPUNIT_TEST(testUnsupportedType);
  20. CPPUNIT_TEST(testMultiplePieces);
  21. CPPUNIT_TEST(testBadPieceNo);
  22. CPPUNIT_TEST(testBadPieceLength);
  23. CPPUNIT_TEST(testUnsupportedType_piece);
  24. #endif // ENABLE_MESSAGE_DIGEST
  25. CPPUNIT_TEST_SUITE_END();
  26. private:
  27. public:
  28. void setUp() {
  29. xmlInitParser();
  30. }
  31. void tearDown() {
  32. xmlCleanupParser();
  33. }
  34. void testParseFile();
  35. void testParseFromBinaryStream();
  36. void testMalformedXML();
  37. void testMalformedXML2();
  38. void testBadSize();
  39. void testBadMaxConn();
  40. void testNoName();
  41. void testBadURLPrefs();
  42. void testBadURLMaxConn();
  43. #ifdef ENABLE_MESSAGE_DIGEST
  44. void testUnsupportedType();
  45. void testMultiplePieces();
  46. void testBadPieceNo();
  47. void testBadPieceLength();
  48. void testUnsupportedType_piece();
  49. #endif // ENABLE_MESSAGE_DIGEST
  50. };
  51. CPPUNIT_TEST_SUITE_REGISTRATION( XML2SAXMetalinkProcessorTest );
  52. void XML2SAXMetalinkProcessorTest::testParseFile()
  53. {
  54. XML2SAXMetalinkProcessor proc;
  55. try {
  56. MetalinkerHandle metalinker = proc.parseFile("test.xml");
  57. MetalinkEntries::iterator entryItr = metalinker->entries.begin();
  58. MetalinkEntryHandle entry1 = *entryItr;
  59. CPPUNIT_ASSERT_EQUAL(string("aria2-0.5.2.tar.bz2"), entry1->getPath());
  60. CPPUNIT_ASSERT_EQUAL((int64_t)0, entry1->getLength());
  61. CPPUNIT_ASSERT_EQUAL(string("0.5.2"), entry1->version);
  62. CPPUNIT_ASSERT_EQUAL(string("en-US"), entry1->language);
  63. CPPUNIT_ASSERT_EQUAL(string("Linux-x86"), entry1->os);
  64. CPPUNIT_ASSERT_EQUAL((int32_t)1, entry1->maxConnections);
  65. #ifdef ENABLE_MESSAGE_DIGEST
  66. CPPUNIT_ASSERT_EQUAL(string("a96cf3f0266b91d87d5124cf94326422800b627d"),
  67. entry1->checksum->getMessageDigest());
  68. CPPUNIT_ASSERT_EQUAL(string("sha1"), entry1->checksum->getAlgo());
  69. #endif // ENABLE_MESSAGE_DIGEST
  70. MetalinkResources::iterator resourceItr1 = entry1->resources.begin();
  71. MetalinkResourceHandle resource1 = *resourceItr1;
  72. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, resource1->type);
  73. CPPUNIT_ASSERT_EQUAL(string("JP"), resource1->location);
  74. CPPUNIT_ASSERT_EQUAL((int32_t)100, resource1->preference);
  75. CPPUNIT_ASSERT_EQUAL(string("ftp://ftphost/aria2-0.5.2.tar.bz2"),
  76. resource1->url);
  77. CPPUNIT_ASSERT_EQUAL((int32_t)1, resource1->maxConnections);
  78. resourceItr1++;
  79. MetalinkResourceHandle resource2 = *resourceItr1;
  80. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_HTTP, resource2->type);
  81. CPPUNIT_ASSERT_EQUAL(string("US"), resource2->location);
  82. CPPUNIT_ASSERT_EQUAL((int32_t)100, resource2->preference);
  83. CPPUNIT_ASSERT_EQUAL(string("http://httphost/aria2-0.5.2.tar.bz2"),
  84. resource2->url);
  85. CPPUNIT_ASSERT_EQUAL((int32_t)-1, resource2->maxConnections);
  86. entryItr++;
  87. MetalinkEntryHandle entry2 = *entryItr;
  88. CPPUNIT_ASSERT_EQUAL(string("aria2-0.5.1.tar.bz2"), entry2->getPath());
  89. CPPUNIT_ASSERT_EQUAL((int64_t)345689, entry2->getLength());
  90. CPPUNIT_ASSERT_EQUAL(string("0.5.1"), entry2->version);
  91. CPPUNIT_ASSERT_EQUAL(string("ja-JP"), entry2->language);
  92. CPPUNIT_ASSERT_EQUAL(string("Linux-m68k"), entry2->os);
  93. CPPUNIT_ASSERT_EQUAL((int32_t)-1, entry2->maxConnections);
  94. #ifdef ENABLE_MESSAGE_DIGEST
  95. CPPUNIT_ASSERT_EQUAL(string("4c255b0ed130f5ea880f0aa061c3da0487e251cc"),
  96. entry2->checksum->getMessageDigest());
  97. CPPUNIT_ASSERT_EQUAL((int32_t)2, entry2->chunkChecksum->countChecksum());
  98. CPPUNIT_ASSERT_EQUAL((int32_t)262144, entry2->chunkChecksum->getChecksumLength());
  99. CPPUNIT_ASSERT_EQUAL(string("179463a88d79cbf0b1923991708aead914f26142"),
  100. entry2->chunkChecksum->getChecksum(0));
  101. CPPUNIT_ASSERT_EQUAL(string("fecf8bc9a1647505fe16746f94e97a477597dbf3"),
  102. entry2->chunkChecksum->getChecksum(1));
  103. CPPUNIT_ASSERT_EQUAL(string("sha1"), entry2->checksum->getAlgo());
  104. #endif // ENABLE_MESSAGE_DIGEST
  105. entryItr++;
  106. // test case: verification hash is not provided
  107. MetalinkEntryHandle entry3 = *entryItr;
  108. CPPUNIT_ASSERT_EQUAL(string("NoVerificationHash"), entry3->getPath());
  109. #ifdef ENABLE_MESSAGE_DIGEST
  110. CPPUNIT_ASSERT(entry3->checksum.isNull());
  111. CPPUNIT_ASSERT(entry3->chunkChecksum.isNull());
  112. #endif // ENABLE_MESSAGE_DIGEST
  113. entryItr++;
  114. // test case: unsupported verification hash is included
  115. MetalinkEntryHandle entry4 = *entryItr;
  116. CPPUNIT_ASSERT_EQUAL(string("UnsupportedVerificationHashTypeIncluded"), entry4->getPath());
  117. #ifdef ENABLE_MESSAGE_DIGEST
  118. CPPUNIT_ASSERT_EQUAL(string("sha1"),
  119. entry4->checksum->getAlgo());
  120. CPPUNIT_ASSERT_EQUAL(string("4c255b0ed130f5ea880f0aa061c3da0487e251cc"),
  121. entry4->checksum->getMessageDigest());
  122. CPPUNIT_ASSERT_EQUAL(string("sha1"),
  123. entry4->chunkChecksum->getAlgo());
  124. #endif // ENABLE_MESSAGE_DIGEST
  125. } catch(Exception* e) {
  126. CPPUNIT_FAIL(e->getMsg());
  127. delete e;
  128. }
  129. }
  130. void XML2SAXMetalinkProcessorTest::testParseFromBinaryStream()
  131. {
  132. XML2SAXMetalinkProcessor proc;
  133. DefaultDiskWriterHandle dw = new DefaultDiskWriter();
  134. dw->openExistingFile("test.xml");
  135. try {
  136. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  137. MetalinkEntries::iterator entryItr = m->entries.begin();
  138. MetalinkEntryHandle entry1 = *entryItr;
  139. CPPUNIT_ASSERT_EQUAL(string("aria2-0.5.2.tar.bz2"), entry1->getPath());
  140. } catch(Exception* e) {
  141. CPPUNIT_FAIL(e->getMsg());
  142. delete e;
  143. }
  144. }
  145. void XML2SAXMetalinkProcessorTest::testMalformedXML()
  146. {
  147. XML2SAXMetalinkProcessor proc;
  148. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  149. dw->setString("<metalink><files></file></metalink>");
  150. try {
  151. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  152. CPPUNIT_FAIL("exception must be thrown.");
  153. } catch(Exception* e) {
  154. cerr << *e << endl;
  155. delete e;
  156. }
  157. }
  158. void XML2SAXMetalinkProcessorTest::testMalformedXML2()
  159. {
  160. XML2SAXMetalinkProcessor proc;
  161. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  162. dw->setString("<metalink><files></files>");
  163. try {
  164. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  165. CPPUNIT_FAIL("exception must be thrown.");
  166. } catch(Exception* e) {
  167. cerr << *e << endl;
  168. delete e;
  169. }
  170. }
  171. void XML2SAXMetalinkProcessorTest::testBadSize()
  172. {
  173. XML2SAXMetalinkProcessor proc;
  174. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  175. dw->setString("<metalink>"
  176. "<files>"
  177. "<file name=\"aria2-0.5.2.tar.bz2\">"
  178. " <size>abc</size>"
  179. " <version>0.5.2</version>"
  180. " <language>en-US</language>"
  181. " <os>Linux-x86</os>"
  182. "</file>"
  183. "</files>"
  184. "</metalink>");
  185. try {
  186. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  187. MetalinkEntries::iterator entryItr = m->entries.begin();
  188. MetalinkEntryHandle e = *entryItr;
  189. CPPUNIT_ASSERT_EQUAL(string("aria2-0.5.2.tar.bz2"), e->getPath());
  190. CPPUNIT_ASSERT_EQUAL((int64_t)0, e->getLength());
  191. CPPUNIT_ASSERT_EQUAL(string("0.5.2"), e->version);
  192. CPPUNIT_ASSERT_EQUAL(string("en-US"), e->language);
  193. CPPUNIT_ASSERT_EQUAL(string("Linux-x86"), e->os);
  194. } catch(Exception* e) {
  195. CPPUNIT_FAIL(e->getMsg());
  196. delete e;
  197. }
  198. }
  199. void XML2SAXMetalinkProcessorTest::testBadMaxConn()
  200. {
  201. XML2SAXMetalinkProcessor proc;
  202. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  203. dw->setString("<metalink>"
  204. "<files>"
  205. "<file name=\"aria2-0.5.2.tar.bz2\">"
  206. " <size>43743838</size>"
  207. " <version>0.5.2</version>"
  208. " <language>en-US</language>"
  209. " <os>Linux-x86</os>"
  210. " <resources maxconnections=\"abc\"/>"
  211. "</file>"
  212. "</files>"
  213. "</metalink>");
  214. try {
  215. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  216. MetalinkEntries::iterator entryItr = m->entries.begin();
  217. MetalinkEntryHandle e = *entryItr;
  218. CPPUNIT_ASSERT_EQUAL((int64_t)43743838, e->getLength());
  219. } catch(Exception* e) {
  220. CPPUNIT_FAIL(e->getMsg());
  221. delete e;
  222. }
  223. }
  224. void XML2SAXMetalinkProcessorTest::testNoName()
  225. {
  226. XML2SAXMetalinkProcessor proc;
  227. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  228. dw->setString("<metalink>"
  229. "<files>"
  230. "<file>"
  231. " <size>1024</size>"
  232. " <version>0.0.1</version>"
  233. " <language>GB</language>"
  234. " <os>Linux-x64</os>"
  235. "</file>"
  236. "<file name=\"aria2-0.5.2.tar.bz2\">"
  237. " <size>43743838</size>"
  238. " <version>0.5.2</version>"
  239. " <language>en-US</language>"
  240. " <os>Linux-x86</os>"
  241. "</file>"
  242. "</files>"
  243. "</metalink>");
  244. try {
  245. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  246. CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size());
  247. MetalinkEntries::iterator entryItr = m->entries.begin();
  248. MetalinkEntryHandle e = *entryItr;
  249. CPPUNIT_ASSERT_EQUAL(string("aria2-0.5.2.tar.bz2"), e->getPath());
  250. } catch(Exception* e) {
  251. CPPUNIT_FAIL(e->getMsg());
  252. delete e;
  253. }
  254. }
  255. void XML2SAXMetalinkProcessorTest::testBadURLPrefs()
  256. {
  257. XML2SAXMetalinkProcessor proc;
  258. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  259. dw->setString("<metalink>"
  260. "<files>"
  261. "<file name=\"aria2-0.5.2.tar.bz2\">"
  262. " <size>43743838</size>"
  263. " <version>0.5.2</version>"
  264. " <language>en-US</language>"
  265. " <os>Linux-x86</os>"
  266. " <resources>"
  267. " <url type=\"ftp\" maxconnections=\"1\" preference=\"xyz\" location=\"JP\">ftp://mirror/</url>"
  268. " </resources>"
  269. "</file>"
  270. "</files>"
  271. "</metalink>");
  272. try {
  273. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  274. MetalinkEntryHandle e = m->entries[0];
  275. MetalinkResourceHandle r = e->resources[0];
  276. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, r->type);
  277. CPPUNIT_ASSERT_EQUAL(0, r->preference);
  278. CPPUNIT_ASSERT_EQUAL(1, r->maxConnections);
  279. CPPUNIT_ASSERT_EQUAL(string("JP"), r->location);
  280. } catch(Exception* e) {
  281. CPPUNIT_FAIL(e->getMsg());
  282. delete e;
  283. }
  284. }
  285. void XML2SAXMetalinkProcessorTest::testBadURLMaxConn()
  286. {
  287. XML2SAXMetalinkProcessor proc;
  288. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  289. dw->setString("<metalink>"
  290. "<files>"
  291. "<file name=\"aria2-0.5.2.tar.bz2\">"
  292. " <size>43743838</size>"
  293. " <version>0.5.2</version>"
  294. " <language>en-US</language>"
  295. " <os>Linux-x86</os>"
  296. " <resources>"
  297. " <url maxconnections=\"xyz\" type=\"ftp\" preference=\"100\" location=\"JP\">ftp://mirror/</url>"
  298. " </resources>"
  299. "</file>"
  300. "</files>"
  301. "</metalink>");
  302. try {
  303. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  304. MetalinkEntryHandle e = m->entries[0];
  305. MetalinkResourceHandle r = e->resources[0];
  306. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, r->type);
  307. CPPUNIT_ASSERT_EQUAL(100, r->preference);
  308. CPPUNIT_ASSERT_EQUAL(-1, r->maxConnections);
  309. CPPUNIT_ASSERT_EQUAL(string("JP"), r->location);
  310. } catch(Exception* e) {
  311. CPPUNIT_FAIL(e->getMsg());
  312. delete e;
  313. }
  314. }
  315. #ifdef ENABLE_MESSAGE_DIGEST
  316. void XML2SAXMetalinkProcessorTest::testUnsupportedType()
  317. {
  318. XML2SAXMetalinkProcessor proc;
  319. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  320. dw->setString("<metalink>"
  321. "<files>"
  322. "<file name=\"aria2-0.5.2.tar.bz2\">"
  323. " <size>43743838</size>"
  324. " <version>0.5.2</version>"
  325. " <language>en-US</language>"
  326. " <os>Linux-x86</os>"
  327. " <resources>"
  328. " <url type=\"ftp\">ftp://mirror/</url>"
  329. " <url type=\"magnet\">magnet:xt=XYZ</url>"
  330. " <url type=\"http\">http://mirror/</url>"
  331. " </resources>"
  332. "</file>"
  333. "</files>"
  334. "</metalink>");
  335. try {
  336. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  337. MetalinkEntryHandle e = m->entries[0];
  338. CPPUNIT_ASSERT_EQUAL((size_t)3, e->resources.size());
  339. MetalinkResourceHandle r1 = e->resources[0];
  340. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, r1->type);
  341. MetalinkResourceHandle r2 = e->resources[1];
  342. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_NOT_SUPPORTED, r2->type);
  343. MetalinkResourceHandle r3 = e->resources[2];
  344. CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_HTTP, r3->type);
  345. } catch(Exception* e) {
  346. CPPUNIT_FAIL(e->getMsg());
  347. delete e;
  348. }
  349. }
  350. void XML2SAXMetalinkProcessorTest::testMultiplePieces()
  351. {
  352. XML2SAXMetalinkProcessor proc;
  353. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  354. dw->setString("<metalink>"
  355. "<files>"
  356. "<file name=\"aria2.tar.bz2\">"
  357. " <verification>"
  358. " <pieces length=\"512\" type=\"md5\">"
  359. " </pieces>"
  360. " <pieces length=\"1024\" type=\"sha1\">"
  361. " </pieces>"
  362. " <pieces length=\"2048\" type=\"sha256\">"
  363. " </pieces>"
  364. " </verification>"
  365. "</file>"
  366. "</files>"
  367. "</metalink>");
  368. try {
  369. // aria2 prefers sha1
  370. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  371. MetalinkEntryHandle e = m->entries[0];
  372. ChunkChecksumHandle c = e->chunkChecksum;
  373. CPPUNIT_ASSERT_EQUAL(string("sha1"), c->getAlgo());
  374. CPPUNIT_ASSERT_EQUAL(1024, c->getChecksumLength());
  375. } catch(Exception* e) {
  376. CPPUNIT_FAIL(e->getMsg());
  377. delete e;
  378. }
  379. }
  380. void XML2SAXMetalinkProcessorTest::testBadPieceNo()
  381. {
  382. XML2SAXMetalinkProcessor proc;
  383. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  384. dw->setString("<metalink>"
  385. "<files>"
  386. "<file name=\"aria2.tar.bz2\">"
  387. " <verification>"
  388. " <pieces length=\"512\" type=\"sha1\">"
  389. " <hash piece=\"0\">abc</hash>"
  390. " <hash piece=\"xyz\">xyz</hash>"
  391. " </pieces>"
  392. " <pieces length=\"512\" type=\"sha256\">"
  393. " <hash piece=\"0\">abc</hash>"
  394. " </pieces>"
  395. " </verification>"
  396. "</file>"
  397. "</files>"
  398. "</metalink>");
  399. try {
  400. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  401. MetalinkEntryHandle e = m->entries[0];
  402. ChunkChecksumHandle c = e->chunkChecksum;
  403. CPPUNIT_ASSERT_EQUAL(string("sha256"), c->getAlgo());
  404. } catch(Exception* e) {
  405. CPPUNIT_FAIL(e->getMsg());
  406. delete e;
  407. }
  408. }
  409. void XML2SAXMetalinkProcessorTest::testBadPieceLength()
  410. {
  411. XML2SAXMetalinkProcessor proc;
  412. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  413. dw->setString("<metalink>"
  414. "<files>"
  415. "<file name=\"aria2.tar.bz2\">"
  416. " <verification>"
  417. " <pieces length=\"xyz\" type=\"sha1\">"
  418. " <hash piece=\"0\">abc</hash>"
  419. " </pieces>"
  420. " <pieces length=\"1024\" type=\"sha256\">"
  421. " <hash piece=\"0\">abc</hash>"
  422. " </pieces>"
  423. " </verification>"
  424. "</file>"
  425. "</files>"
  426. "</metalink>");
  427. try {
  428. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  429. MetalinkEntryHandle e = m->entries[0];
  430. ChunkChecksumHandle c = e->chunkChecksum;
  431. CPPUNIT_ASSERT_EQUAL(string("sha256"), c->getAlgo());
  432. } catch(Exception* e) {
  433. CPPUNIT_FAIL(e->getMsg());
  434. delete e;
  435. }
  436. }
  437. void XML2SAXMetalinkProcessorTest::testUnsupportedType_piece()
  438. {
  439. XML2SAXMetalinkProcessor proc;
  440. ByteArrayDiskWriterHandle dw = new ByteArrayDiskWriter();
  441. dw->setString("<metalink>"
  442. "<files>"
  443. "<file name=\"aria2.tar.bz2\">"
  444. " <verification>"
  445. " <pieces length=\"512\" type=\"ARIA2\">"
  446. " <hash piece=\"0\">abc</hash>"
  447. " </pieces>"
  448. " <pieces length=\"1024\" type=\"sha256\">"
  449. " <hash piece=\"0\">abc</hash>"
  450. " </pieces>"
  451. " </verification>"
  452. "</file>"
  453. "</files>"
  454. "</metalink>");
  455. try {
  456. MetalinkerHandle m = proc.parseFromBinaryStream(dw);
  457. MetalinkEntryHandle e = m->entries[0];
  458. ChunkChecksumHandle c = e->chunkChecksum;
  459. CPPUNIT_ASSERT_EQUAL(string("sha256"), c->getAlgo());
  460. } catch(Exception* e) {
  461. CPPUNIT_FAIL(e->getMsg());
  462. delete e;
  463. }
  464. }
  465. #endif // ENABLE_MESSAGE_DIGEST