From 10942e2040fe67f6d8903385b274e83d58965aa2 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Tue, 28 Oct 2008 20:52:04 +0000 Subject: [PATCH] Add URL tests. --- xmltoolingtest/SecurityHelperTest.h | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/xmltoolingtest/SecurityHelperTest.h b/xmltoolingtest/SecurityHelperTest.h index aa80fbc..61e571e 100644 --- a/xmltoolingtest/SecurityHelperTest.h +++ b/xmltoolingtest/SecurityHelperTest.h @@ -20,6 +20,12 @@ class SecurityHelperTest : public CxxTest::TestSuite { vector certs; + + SOAPTransport* getTransport(const char* url) { + SOAPTransport::Address addr("SecurityHelperTest", "spaces.internet2.edu", url); + string scheme(addr.m_endpoint, strchr(addr.m_endpoint,':') - addr.m_endpoint); + return XMLToolingConfig::getConfig().SOAPTransportManager.newPlugin(scheme.c_str(), addr); + } public: void setUp() { } @@ -44,6 +50,21 @@ public: TSM_ASSERT("Different keys matched", !SecurityHelper::matches(key3.get(), key4.get())); } + void testKeysFromURLs() { + string pathname = data_path + "key.pem.bak"; + auto_ptr t1(getTransport("https://spaces.internet2.edu/download/attachments/5305/key.pem")); + auto_ptr key1(SecurityHelper::loadKeyFromURL(*t1.get(), pathname.c_str())); + pathname = data_path + "key.der.bak"; + auto_ptr t2(getTransport("https://spaces.internet2.edu/download/attachments/5305/key.der")); + auto_ptr key2(SecurityHelper::loadKeyFromURL(*t2.get(), pathname.c_str())); + pathname = data_path + "test.pfx.bak"; + auto_ptr t3(getTransport("https://spaces.internet2.edu/download/attachments/5305/test.pfx")); + auto_ptr key3(SecurityHelper::loadKeyFromURL(*t3.get(), pathname.c_str(), NULL, "password")); + + TSM_ASSERT("PEM/DER keys did not match", SecurityHelper::matches(key1.get(), key2.get())); + TSM_ASSERT("DER/PKCS12 keys did not match", SecurityHelper::matches(key2.get(), key3.get())); + } + void testCertificatesFromFiles() { string pathname = data_path + "cert.pem"; SecurityHelper::loadCertificatesFromFile(certs, pathname.c_str()); @@ -62,5 +83,30 @@ public: TSM_ASSERT("DER/PKCS12 keys did not match", SecurityHelper::matches(key2.get(), key3.get())); for_each(certs.begin(), certs.end(), xmltooling::cleanup()); + certs.clear(); + } + + void testCertificatesFromURLs() { + string pathname = data_path + "cert.pem.bak"; + auto_ptr t1(getTransport("https://spaces.internet2.edu/download/attachments/5305/cert.pem")); + SecurityHelper::loadCertificatesFromURL(certs, *t1.get(), pathname.c_str()); + pathname = data_path + "cert.der.bak"; + auto_ptr t2(getTransport("https://spaces.internet2.edu/download/attachments/5305/cert.der")); + SecurityHelper::loadCertificatesFromURL(certs, *t2.get(), pathname.c_str()); + pathname = data_path + "test.pfx.bak"; + auto_ptr t3(getTransport("https://spaces.internet2.edu/download/attachments/5305/test.pfx")); + SecurityHelper::loadCertificatesFromURL(certs, *t3.get(), pathname.c_str(), NULL, "password"); + + TSM_ASSERT_EQUALS("Wrong certificate count", certs.size(), 3); + + auto_ptr key1(certs[0]->clonePublicKey()); + auto_ptr key2(certs[0]->clonePublicKey()); + auto_ptr key3(certs[0]->clonePublicKey()); + + TSM_ASSERT("PEM/DER keys did not match", SecurityHelper::matches(key1.get(), key2.get())); + TSM_ASSERT("DER/PKCS12 keys did not match", SecurityHelper::matches(key2.get(), key3.get())); + + for_each(certs.begin(), certs.end(), xmltooling::cleanup()); + certs.clear(); } }; -- 2.1.4