From: Scott Cantor Date: Tue, 28 Oct 2008 20:52:04 +0000 (+0000) Subject: Add URL tests. X-Git-Tag: 1.2.0~57 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=commitdiff_plain;h=10942e2040fe67f6d8903385b274e83d58965aa2 Add URL tests. --- 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(); } };