X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=samltest%2Fbinding.h;h=3564bb1d752d9a3d20a3b7d8d2eca9cd60193074;hb=b64ce0fbcf21c322d9d4f1cc282b29e81ff4ead7;hp=fdd0ce77ff99d5a2505c209720d9cb82f78edbc5;hpb=1bc8e721db3a50294df852662e1eddcdbdae8f9f;p=shibboleth%2Fcpp-opensaml.git diff --git a/samltest/binding.h b/samltest/binding.h index fdd0ce7..3564bb1 100644 --- a/samltest/binding.h +++ b/samltest/binding.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,15 +17,18 @@ #include "internal.h" #include -#include -#include #include #include -#include +#include +#include #include -#include +#include +#include +#include +#include -using namespace saml2md; +using namespace opensaml::saml2md; +using namespace opensaml; using namespace xmlsignature; class SAMLBindingBaseTestCase : public HTTPRequest, public HTTPResponse @@ -33,10 +36,10 @@ class SAMLBindingBaseTestCase : public HTTPRequest, public HTTPResponse protected: CredentialResolver* m_creds; MetadataProvider* m_metadata; - opensaml::TrustEngine* m_trust; + TrustEngine* m_trust; map m_fields; map m_headers; - string m_method,m_url; + string m_method,m_url,m_query; vector m_clientCerts; vector m_rules; @@ -49,6 +52,7 @@ public: m_headers.clear(); m_method.erase(); m_url.erase(); + m_query.erase(); try { string config = data_path + "binding/ExampleMetadataProvider.xml"; @@ -62,7 +66,7 @@ public: doc->getDocumentElement()->setAttributeNS(NULL,path.get(),file.get()); m_metadata = SAMLConfig::getConfig().MetadataProviderManager.newPlugin( - FILESYSTEM_METADATA_PROVIDER,doc->getDocumentElement() + XML_METADATA_PROVIDER,doc->getDocumentElement() ); m_metadata->init(); @@ -74,10 +78,11 @@ public: FILESYSTEM_CREDENTIAL_RESOLVER,doc2->getDocumentElement() ); - m_trust = SAMLConfig::getConfig().TrustEngineManager.newPlugin(EXPLICIT_KEY_SAMLTRUSTENGINE, NULL); + m_trust = XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(EXPLICIT_KEY_TRUSTENGINE, NULL); m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(MESSAGEFLOW_POLICY_RULE,NULL)); - m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(MESSAGESIGNING_POLICY_RULE,NULL)); + m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(SIMPLESIGNING_POLICY_RULE,NULL)); + m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(XMLSIGNING_POLICY_RULE,NULL)); } catch (XMLToolingException& ex) { TS_TRACE(ex.what()); @@ -89,6 +94,7 @@ public: void tearDown() { for_each(m_rules.begin(), m_rules.end(), xmltooling::cleanup()); + m_rules.clear(); delete m_creds; delete m_metadata; delete m_trust; @@ -99,6 +105,7 @@ public: m_headers.clear(); m_method.erase(); m_url.erase(); + m_query.erase(); } // HTTPRequest methods @@ -111,8 +118,12 @@ public: return "https"; } - bool isSecure() const { - return true; + const char* getHostname() const { + return "localhost"; + } + + int getPort() const { + return 443; } string getContentType() const { @@ -123,6 +134,10 @@ public: return -1; } + const char* getRequestURI() const { + return "/"; + } + const char* getRequestURL() const { return m_url.c_str(); } @@ -132,7 +147,7 @@ public: } const char* getQueryString() const { - return NULL; + return m_query.c_str(); } string getRemoteUser() const { @@ -167,18 +182,10 @@ public: // HTTPResponse methods - void setHeader(const char* name, const char* value) { + void setResponseHeader(const char* name, const char* value) { m_headers[name] = value ? value : ""; } - void setContentType(const char* type) { - setHeader("Content-Type", type); - } - - void setCookie(const char* name, const char* value) { - m_headers["Set-Cookie"] = string(name) + "=" + (value ? value : ""); - } - // The amount of error checking missing from this is incredible, but as long // as the test data isn't unexpected or malformed, it should work. @@ -188,6 +195,7 @@ public: char* pch = strchr(dup,'?'); if (pch) { *pch++=0; + m_query = pch; char* name=pch; while (name && *name) { pch=strchr(pch,'='); @@ -196,7 +204,7 @@ public: pch=strchr(pch,'&'); if (pch) *pch++=0; - SAMLConfig::getConfig().getURLEncoder()->decode(value); + XMLToolingConfig::getConfig().getURLEncoder()->decode(value); m_fields[name] = value; name = pch; } @@ -232,6 +240,8 @@ public: return decoded; } + using HTTPResponse::sendResponse; + long sendResponse(std::istream& inputStream, long status) { m_method="POST"; string page,line;