diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-12 13:35:35 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-12 13:35:35 +0000 |
| commit | 5472c8033e3a36267a1ca5f12ade08ce0296c42b (patch) | |
| tree | 8f785e508b6238a0eea7daf98bc3d45c00dc180c /test/MetalinkParserControllerTest.cc | |
| parent | 6796e1c80593284ec1534136d977c83bbd8f3186 (diff) | |
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added the ability to retrieve signature from Metalink file.
A retrieved signature is stored in Signature class and it is
held by
DownloadContext class. Note that aria2 doesn't verify signature.
* src/DownloadContext.cc
* src/DownloadContext.h
* src/Makefile.am
* src/Makefile.in
* src/Metalink2RequestGroup.cc
* src/MetalinkEntry.cc
* src/MetalinkEntry.h
* src/MetalinkParserController.cc
* src/MetalinkParserController.h
* src/MetalinkParserStateMachine.cc
* src/MetalinkParserStateMachine.h
* src/Signature.cc
* src/Signature.h
* src/SignatureMetalinkParserState.cc
* src/SignatureMetalinkParserState.h
* src/VerificationMetalinkParserState.cc
* src/VerificationMetalinkParserState.h
* test/Metalink2RequestGroupTest.cc
* test/MetalinkParserControllerTest.cc
* test/MetalinkProcessorTest.cc
* test/test.xml
Diffstat (limited to 'test/MetalinkParserControllerTest.cc')
| -rw-r--r-- | test/MetalinkParserControllerTest.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/MetalinkParserControllerTest.cc b/test/MetalinkParserControllerTest.cc index b7feb9d1..df0f355b 100644 --- a/test/MetalinkParserControllerTest.cc +++ b/test/MetalinkParserControllerTest.cc @@ -7,6 +7,7 @@ # include "Checksum.h" # include "ChunkChecksum.h" #endif // ENABLE_MESSAGE_DIGEST +#include "Signature.h" #include <cppunit/extensions/HelperMacros.h> namespace aria2 { @@ -20,6 +21,7 @@ class MetalinkParserControllerTest:public CppUnit::TestFixture { CPPUNIT_TEST(testChecksumTransaction); CPPUNIT_TEST(testChunkChecksumTransaction); #endif // ENABLE_MESSAGE_DIGEST + CPPUNIT_TEST(testSignatureTransaction); CPPUNIT_TEST_SUITE_END(); private: @@ -35,6 +37,7 @@ public: void testChecksumTransaction(); void testChunkChecksumTransaction(); #endif // ENABLE_MESSAGE_DIGEST + void testSignatureTransaction(); }; @@ -150,4 +153,40 @@ void MetalinkParserControllerTest::testChunkChecksumTransaction() } #endif // ENABLE_MESSAGE_DIGEST +void MetalinkParserControllerTest::testSignatureTransaction() +{ + static std::string pgpSignature = + "-----BEGIN PGP SIGNATURE-----\n" + "Version: GnuPG v1.4.9 (GNU/Linux)\n" + "\n" + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n" + "ffffffffffffffffffffffff\n" + "fffff\n" + "-----END PGP SIGNATURE-----\n"; + + MetalinkParserController ctrl; + ctrl.newEntryTransaction(); + + ctrl.newSignatureTransaction(); + ctrl.setTypeOfSignature("pgp"); + ctrl.setFileOfSignature("aria2.sig"); + ctrl.setBodyOfSignature(pgpSignature); + // commitEntryTransaction also commits signature transaction. + ctrl.commitEntryTransaction(); + + SharedHandle<Metalinker> m = ctrl.getResult(); + CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size()); + SharedHandle<Signature> sig = m->entries.front()->getSignature(); + CPPUNIT_ASSERT_EQUAL(std::string("pgp"), sig->getType()); + CPPUNIT_ASSERT_EQUAL(std::string("aria2.sig"), sig->getFile()); + CPPUNIT_ASSERT_EQUAL(pgpSignature, sig->getBody()); + + // See when signature transaction is canceled: + ctrl.newEntryTransaction(); + ctrl.newSignatureTransaction(); + ctrl.cancelSignatureTransaction(); + ctrl.commitEntryTransaction(); + CPPUNIT_ASSERT(ctrl.getResult()->entries[1]->getSignature().isNull()); +} + } // namespace aria2 |
