summaryrefslogtreecommitdiff
path: root/test/MetalinkParserControllerTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 13:35:35 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 13:35:35 +0000
commit5472c8033e3a36267a1ca5f12ade08ce0296c42b (patch)
tree8f785e508b6238a0eea7daf98bc3d45c00dc180c /test/MetalinkParserControllerTest.cc
parent6796e1c80593284ec1534136d977c83bbd8f3186 (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.cc39
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