- toSend.release();\r
- \r
- // Decode message.\r
- string relayState;\r
- auto_ptr<MessageDecoder> decoder(\r
- SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, NULL)\r
- );\r
- decoder->setArtifactResolver(this);\r
- auto_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));\r
- \r
- // Test the results.\r
- TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");\r
- TSM_ASSERT("SAML Response not decoded successfully.", response.get());\r
- TSM_ASSERT("Message was not verified.", policy.isSecure());\r
- auto_ptr_char entityID(policy.getIssuer()->getName());\r
- TSM_ASSERT("Issuer was not expected.", !strcmp(entityID.get(),"https://idp.example.org/"));\r
- TSM_ASSERT_EQUALS("Assertion count was not correct.", response->getAssertions().size(), 1);\r
-\r
- // Trigger a replay.\r
- policy.reset();\r
- TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), BindingException);\r
- }\r
- catch (XMLToolingException& ex) {\r
- TS_TRACE(ex.what());\r
- throw;\r
- }\r
- }\r
- \r
- SAMLArtifact* generateSAML1Artifact(const EntityDescriptor* relyingParty) const {\r
- throw BindingException("Not implemented.");\r
- }\r
- \r
- saml2p::SAML2Artifact* generateSAML2Artifact(const EntityDescriptor* relyingParty) const {\r
- return new SAML2ArtifactType0004(SAMLConfig::getConfig().hashSHA1("https://idp.example.org/"),1);\r
- }\r
- \r
- saml1p::Response* resolve(\r
- const vector<SAMLArtifact*>& artifacts,\r
- const IDPSSODescriptor& idpDescriptor,\r
- SecurityPolicy& policy\r
- ) const {\r
- throw BindingException("Not implemented.");\r
- }\r
-\r
- ArtifactResponse* resolve(\r
- const SAML2Artifact& artifact,\r
- const SSODescriptorType& ssoDescriptor,\r
- SecurityPolicy& policy\r
- ) const {\r
- XMLObject* xmlObject =\r
- SAMLConfig::getConfig().getArtifactMap()->retrieveContent(&artifact, "https://sp.example.org/");\r
- Response* payload = dynamic_cast<Response*>(xmlObject);\r
- TSM_ASSERT("Not a response.", payload!=NULL);\r
-\r
- auto_ptr<ArtifactResponse> response(ArtifactResponseBuilder::buildArtifactResponse());\r
- response->setPayload(payload);\r
- Status* status = StatusBuilder::buildStatus();\r
- response->setStatus(status);\r
- StatusCode* sc = StatusCodeBuilder::buildStatusCode();\r
- status->setStatusCode(sc);\r
- sc->setValue(StatusCode::SUCCESS);\r
- response->marshall();\r
- SchemaValidators.validate(response.get());\r
- policy.evaluate(*(response.get()), this);\r
- return response.release();\r
- }\r
-};\r
+ decoder->setArtifactResolver(this);
+ auto_ptr<Response> response(dynamic_cast<Response*>(decoder->decode(relayState,*this,policy)));
+
+ // Test the results.
+ TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
+ TSM_ASSERT("SAML Response not decoded successfully.", response.get());
+ TSM_ASSERT("Message was not verified.", policy.isSecure());
+ auto_ptr_char entityID(policy.getIssuer()->getName());
+ TSM_ASSERT("Issuer was not expected.", !strcmp(entityID.get(),"https://idp.example.org/"));
+ TSM_ASSERT_EQUALS("Assertion count was not correct.", response->getAssertions().size(), 1);
+
+ // Trigger a replay.
+ policy.reset();
+ TSM_ASSERT_THROWS("Did not catch the replay.", decoder->decode(relayState,*this,policy), BindingException);
+ }
+ catch (XMLToolingException& ex) {
+ TS_TRACE(ex.what());
+ throw;
+ }
+ }
+
+ SAMLArtifact* generateSAML1Artifact(const EntityDescriptor* relyingParty) const {
+ throw BindingException("Not implemented.");
+ }
+
+ saml2p::SAML2Artifact* generateSAML2Artifact(const EntityDescriptor* relyingParty) const {
+ return new SAML2ArtifactType0004(SAMLConfig::getConfig().hashSHA1("https://idp.example.org/"),1);
+ }
+
+ saml1p::Response* resolve(
+ const vector<SAMLArtifact*>& artifacts,
+ const IDPSSODescriptor& idpDescriptor,
+ SecurityPolicy& policy
+ ) const {
+ throw BindingException("Not implemented.");
+ }
+
+ ArtifactResponse* resolve(
+ const SAML2Artifact& artifact,
+ const SSODescriptorType& ssoDescriptor,
+ SecurityPolicy& policy
+ ) const {
+ XMLObject* xmlObject =
+ SAMLConfig::getConfig().getArtifactMap()->retrieveContent(&artifact, "https://sp.example.org/");
+ Response* payload = dynamic_cast<Response*>(xmlObject);
+ TSM_ASSERT("Not a response.", payload!=NULL);
+
+ auto_ptr<ArtifactResponse> response(ArtifactResponseBuilder::buildArtifactResponse());
+ response->setPayload(payload);
+ Status* status = StatusBuilder::buildStatus();
+ response->setStatus(status);
+ StatusCode* sc = StatusCodeBuilder::buildStatusCode();
+ status->setStatusCode(sc);
+ sc->setValue(StatusCode::SUCCESS);
+ response->marshall();
+ SchemaValidators.validate(response.get());
+ policy.evaluate(*(response.get()), this);
+ return response.release();
+ }
+};