Address certificate object lifetime with wrapper class.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / KeyInfoTest.h
index 0d742ba..64fb6c7 100644 (file)
@@ -19,6 +19,8 @@
 #include <fstream>\r
 #include <xmltooling/signature/KeyInfo.h>\r
 \r
+using namespace xmlsignature;\r
+\r
 class KeyInfoTest : public CxxTest::TestSuite {\r
 public:\r
     KeyInfoTest() {}\r
@@ -32,19 +34,15 @@ public:
     }\r
 \r
     void testKeyInfo1() {\r
-        TS_TRACE("testKeyInfo1");\r
-\r
         string path=data_path + "KeyInfo1.xml";\r
         ifstream fs(path.c_str());\r
-        DOMDocument* doc=validatingPool->parse(fs);\r
+        DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);\r
         TS_ASSERT(doc!=NULL);\r
 \r
         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
         TS_ASSERT(b!=NULL);\r
 \r
-        auto_ptr<KeyInfo> kiObject(\r
-            dynamic_cast<KeyInfo*>(b->buildFromDocument(doc))\r
-            );\r
+        auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
         TS_ASSERT(kiObject.get()!=NULL);\r
         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
             3, kiObject->getOrderedChildren().size());\r
@@ -54,8 +52,43 @@ public:
             1, kiObject->getX509Datas().front()->getX509Certificates().size());\r
 \r
         auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org");\r
-        TSM_ASSERT_SAME_DATA("KeyName was not expected value",\r
-            expected.get(), kiObject->getKeyNames().front()->getName(), XMLString::stringLen(expected.get()));\r
+        TSM_ASSERT("KeyName was not expected value", XMLString::equals(expected.get(), kiObject->getKeyNames().front()->getName()));\r
+\r
+        KeyInfoSchemaValidators.validate(kiObject.get());\r
+    }\r
+\r
+    void testKeyInfo2() {\r
+        string path=data_path + "KeyInfo2.xml";\r
+        ifstream fs(path.c_str());\r
+        DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);\r
+        TS_ASSERT(doc!=NULL);\r
+\r
+        const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
+        TS_ASSERT(b!=NULL);\r
+\r
+        auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
+        TS_ASSERT(kiObject.get()!=NULL);\r
+        TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
+            2, kiObject->getOrderedChildren().size());\r
+        TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
+            1, kiObject->getRetrievalMethods().size());\r
+        TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
+            2, kiObject->getSPKIDatas().front()->getSPKISexps().size());\r
+\r
+        KeyInfoSchemaValidators.validate(kiObject.get());\r
     }\r
 \r
+    void testKeyInfo3() {\r
+        string path=data_path + "KeyInfo3.xml";\r
+        ifstream fs(path.c_str());\r
+        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);\r
+        TS_ASSERT(doc!=NULL);\r
+\r
+        const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
+        TS_ASSERT(b!=NULL);\r
+\r
+        auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
+        TS_ASSERT(kiObject.get()!=NULL);\r
+        TS_ASSERT_THROWS(KeyInfoSchemaValidators.validate(kiObject.get()),ValidationException);\r
+    }\r
 };\r