Make sure to validate unmarshalled copy.
[shibboleth/cpp-opensaml.git] / samltest / signature / SAML1ResponseTest.h
index 6643b5e..f975cc1 100644 (file)
@@ -114,16 +114,17 @@ public:
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);\r
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
         \r
-        assertEquals(expectedChildElementsDOM, b->buildFromDocument(doc));\r
+        auto_ptr<XMLObject> response2(b->buildFromDocument(doc));\r
+        assertEquals("Unmarshalled request does not match", expectedChildElementsDOM, response2.get(), false);\r
         \r
         try {\r
             SignatureProfileValidator spv;\r
-            spv.validate(assertion->getSignature());\r
-            spv.validate(response->getSignature());\r
+            spv.validate(dynamic_cast<Response*>(response2.get())->getAssertions().front()->getSignature());\r
+            spv.validate(dynamic_cast<Response*>(response2.get())->getSignature());\r
 \r
             SignatureValidator sv(new KeyResolver(m_resolver->getKey()));\r
-            sv.validate(assertion->getSignature());\r
-            sv.validate(response->getSignature());\r
+            sv.validate(dynamic_cast<Response*>(response2.get())->getAssertions().front()->getSignature());\r
+            sv.validate(dynamic_cast<Response*>(response2.get())->getSignature());\r
         }\r
         catch (XMLToolingException& e) {\r
             TS_TRACE(e.what());\r