From: Scott Cantor Date: Tue, 22 May 2012 03:48:10 +0000 (+0000) Subject: Use better smart pointers in tests X-Git-Tag: 2.5.0~10 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=commitdiff_plain;h=78554aeb050d4e7f84acd30d4d332a625f32e352 Use better smart pointers in tests --- diff --git a/samltest/binding.h b/samltest/binding.h index a455499..13cda7d 100644 --- a/samltest/binding.h +++ b/samltest/binding.h @@ -27,6 +27,8 @@ #include #include #include + +#include #include #include #include @@ -41,9 +43,9 @@ using namespace xmlsignature; class SAMLBindingBaseTestCase : public HTTPRequest, public HTTPResponse { protected: - CredentialResolver* m_creds; - MetadataProvider* m_metadata; - TrustEngine* m_trust; + boost::scoped_ptr m_creds; + boost::scoped_ptr m_metadata; + boost::scoped_ptr m_trust; map m_fields; map m_headers; string m_method,m_url,m_query; @@ -52,9 +54,6 @@ protected: public: void setUp() { - m_creds=nullptr; - m_metadata=nullptr; - m_trust=nullptr; m_fields.clear(); m_headers.clear(); m_method.erase(); @@ -72,8 +71,8 @@ public: auto_ptr_XMLCh file(s.c_str()); doc->getDocumentElement()->setAttributeNS(nullptr,path.get(),file.get()); - m_metadata = SAMLConfig::getConfig().MetadataProviderManager.newPlugin( - XML_METADATA_PROVIDER,doc->getDocumentElement() + m_metadata.reset( + SAMLConfig::getConfig().MetadataProviderManager.newPlugin(XML_METADATA_PROVIDER, doc->getDocumentElement()) ); m_metadata->init(); @@ -81,11 +80,11 @@ public: ifstream in2(config.c_str()); DOMDocument* doc2=XMLToolingConfig::getConfig().getParser().parse(in2); XercesJanitor janitor2(doc2); - m_creds = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin( - FILESYSTEM_CREDENTIAL_RESOLVER,doc2->getDocumentElement() + m_creds.reset( + XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(FILESYSTEM_CREDENTIAL_RESOLVER, doc2->getDocumentElement()) ); - m_trust = XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(EXPLICIT_KEY_TRUSTENGINE, nullptr); + m_trust.reset(XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(EXPLICIT_KEY_TRUSTENGINE, nullptr)); m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(MESSAGEFLOW_POLICY_RULE,nullptr)); m_rules.push_back(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(SIMPLESIGNING_POLICY_RULE,nullptr)); @@ -101,13 +100,10 @@ public: void tearDown() { for_each(m_rules.begin(), m_rules.end(), xmltooling::cleanup()); + m_trust.reset(); + m_metadata.reset(); + m_creds.reset(); m_rules.clear(); - delete m_creds; - delete m_metadata; - delete m_trust; - m_creds=nullptr; - m_metadata=nullptr; - m_trust=nullptr; m_fields.clear(); m_headers.clear(); m_method.erase(); @@ -259,7 +255,7 @@ public: pch+=strlen("action=\""); m_url = html_decode(page.substr(pch-page.c_str(),strchr(pch,'"')-pch)); - while (pch=strstr(pch,"resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); // Encode message. - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML1_PROFILE_BROWSER_ARTIFACT, pair(nullptr,nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -84,13 +84,13 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML1_PROFILE_BROWSER_ARTIFACT, pair(nullptr,nullptr) ) ); decoder->setArtifactResolver(this); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("TARGET was not the expected result.", relayState, "state"); @@ -142,7 +142,7 @@ public: vector sigs(1,response->getSignature()); CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); response->marshall((DOMDocument*)nullptr,&sigs,cred); diff --git a/samltest/saml1/binding/SAML1POSTTest.h b/samltest/saml1/binding/SAML1POSTTest.h index ad87a35..87bad33 100644 --- a/samltest/saml1/binding/SAML1POSTTest.h +++ b/samltest/saml1/binding/SAML1POSTTest.h @@ -38,7 +38,7 @@ public: void testSAML1POST() { try { xmltooling::QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME); - SecurityPolicy policy(m_metadata, &idprole, m_trust, false); + SecurityPolicy policy(m_metadata.get(), &idprole, m_trust.get(), false); policy.getRules().assign(m_rules.begin(), m_rules.end()); // Read message to use from file. @@ -53,7 +53,7 @@ public: CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); @@ -70,13 +70,13 @@ public: XercesJanitor janitor2(encoder_config); encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get())); encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get()); - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML1_PROFILE_BROWSER_POST, pair(encoder_config->getDocumentElement(),nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -90,12 +90,12 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML1_PROFILE_BROWSER_POST, pair(nullptr,nullptr) ) ); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("TARGET was not the expected result.", relayState, "state"); diff --git a/samltest/saml2/binding/SAML2ArtifactTest.h b/samltest/saml2/binding/SAML2ArtifactTest.h index df162e7..96f80e6 100644 --- a/samltest/saml2/binding/SAML2ArtifactTest.h +++ b/samltest/saml2/binding/SAML2ArtifactTest.h @@ -43,7 +43,7 @@ public: void testSAML2Artifact() { try { xmltooling::QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME); - SecurityPolicy policy(m_metadata, &idprole, m_trust, false); + SecurityPolicy policy(m_metadata.get(), &idprole, m_trust.get(), false); policy.getRules().assign(m_rules.begin(), m_rules.end()); // Read message to use from file. @@ -58,7 +58,7 @@ public: CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); @@ -66,12 +66,12 @@ public: toSend->setIssueInstant(time(nullptr)); // Encode message. - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_ARTIFACT, pair(nullptr,nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -85,13 +85,13 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_ARTIFACT, pair(nullptr,nullptr) ) ); decoder->setArtifactResolver(this); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state"); diff --git a/samltest/saml2/binding/SAML2POSTTest.h b/samltest/saml2/binding/SAML2POSTTest.h index 24d7bc5..87c9a75 100644 --- a/samltest/saml2/binding/SAML2POSTTest.h +++ b/samltest/saml2/binding/SAML2POSTTest.h @@ -38,7 +38,7 @@ public: void testSAML2POST() { try { xmltooling::QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME); - SecurityPolicy policy(m_metadata, &idprole, m_trust, false); + SecurityPolicy policy(m_metadata.get(), &idprole, m_trust.get(), false); policy.getRules().assign(m_rules.begin(), m_rules.end()); // Read message to use from file. @@ -53,7 +53,7 @@ public: CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); @@ -70,12 +70,12 @@ public: XercesJanitor janitor2(encoder_config); encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get())); encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get()); - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_POST, pair(encoder_config->getDocumentElement(), nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -89,12 +89,12 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_POST, pair(nullptr,nullptr) ) ); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state"); @@ -117,7 +117,7 @@ public: void testSAML2POSTSimpleSign() { try { xmltooling::QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME); - SecurityPolicy policy(m_metadata, &idprole, m_trust, false); + SecurityPolicy policy(m_metadata.get(), &idprole, m_trust.get(), false); policy.getRules().assign(m_rules.begin(), m_rules.end()); // Read message to use from file. @@ -132,7 +132,7 @@ public: CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); @@ -149,12 +149,12 @@ public: XercesJanitor janitor2(encoder_config); encoder_config->appendChild(encoder_config->createElementNS(nullptr,lit1.get())); encoder_config->getDocumentElement()->setAttributeNS(nullptr,lit2.get(),lit3.get()); - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_POST_SIMPLESIGN, pair(encoder_config->getDocumentElement(),nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -168,12 +168,12 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_POST_SIMPLESIGN, pair(nullptr,nullptr) ) ); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state"); diff --git a/samltest/saml2/binding/SAML2RedirectTest.h b/samltest/saml2/binding/SAML2RedirectTest.h index f495978..bbbb8da 100644 --- a/samltest/saml2/binding/SAML2RedirectTest.h +++ b/samltest/saml2/binding/SAML2RedirectTest.h @@ -38,7 +38,7 @@ public: void testSAML2Redirect() { try { xmltooling::QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME); - SecurityPolicy policy(m_metadata, &idprole, m_trust, false); + SecurityPolicy policy(m_metadata.get(), &idprole, m_trust.get(), false); policy.getRules().assign(m_rules.begin(), m_rules.end()); // Read message to use from file. @@ -53,7 +53,7 @@ public: CredentialCriteria cc; cc.setUsage(Credential::SIGNING_CREDENTIAL); - Locker clocker(m_creds); + Locker clocker(m_creds.get()); const Credential* cred = m_creds->resolve(&cc); TSM_ASSERT("Retrieved credential was null", cred!=nullptr); @@ -62,12 +62,12 @@ public: toSend->setID(nullptr); // Encode message. - auto_ptr encoder( + boost::scoped_ptr encoder( SAMLConfig::getConfig().MessageEncoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_REDIRECT, pair(nullptr,nullptr) ) ); - Locker locker(m_metadata); + Locker locker(m_metadata.get()); encoder->encode( *this, toSend.get(), @@ -81,12 +81,12 @@ public: // Decode message. string relayState; - auto_ptr decoder( + boost::scoped_ptr decoder( SAMLConfig::getConfig().MessageDecoderManager.newPlugin( samlconstants::SAML20_BINDING_HTTP_REDIRECT, pair(nullptr,nullptr) ) ); - auto_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); + boost::scoped_ptr response(dynamic_cast(decoder->decode(relayState,*this,policy))); // Test the results. TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");