Multi-line svn commit, see body.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / KeyInfoTest.h
1 /*\r
2  *  Copyright 2001-2005 Internet2\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 #include "XMLObjectBaseTestCase.h"\r
18 \r
19 #include <fstream>\r
20 #include <xmltooling/signature/KeyInfo.h>\r
21 #include <xmltooling/validation/ValidatorSuite.h>\r
22 \r
23 using namespace xmlsignature;\r
24 \r
25 class KeyInfoTest : public CxxTest::TestSuite {\r
26 public:\r
27     KeyInfoTest() {}\r
28 \r
29     void setUp() {\r
30         XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder());\r
31     }\r
32 \r
33     void tearDown() {\r
34         XMLObjectBuilder::deregisterDefaultBuilder();\r
35     }\r
36 \r
37     void testKeyInfo1() {\r
38         string path=data_path + "KeyInfo1.xml";\r
39         ifstream fs(path.c_str());\r
40         DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);\r
41         TS_ASSERT(doc!=NULL);\r
42 \r
43         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
44         TS_ASSERT(b!=NULL);\r
45 \r
46         auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
47         TS_ASSERT(kiObject.get()!=NULL);\r
48         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
49             3, kiObject->getOrderedChildren().size());\r
50         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
51             1, kiObject->getKeyValues().size());\r
52         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
53             1, kiObject->getX509Datas().front()->getX509Certificates().size());\r
54 \r
55         auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org");\r
56         TSM_ASSERT("KeyName was not expected value", XMLString::equals(expected.get(), kiObject->getKeyNames().front()->getName()));\r
57 \r
58         SchemaValidators.validate(kiObject.get());\r
59     }\r
60 \r
61     void testKeyInfo2() {\r
62         string path=data_path + "KeyInfo2.xml";\r
63         ifstream fs(path.c_str());\r
64         DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);\r
65         TS_ASSERT(doc!=NULL);\r
66 \r
67         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
68         TS_ASSERT(b!=NULL);\r
69 \r
70         auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
71         TS_ASSERT(kiObject.get()!=NULL);\r
72         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
73             2, kiObject->getOrderedChildren().size());\r
74         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
75             1, kiObject->getRetrievalMethods().size());\r
76         TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
77             2, kiObject->getSPKIDatas().front()->getSPKISexps().size());\r
78 \r
79         SchemaValidators.validate(kiObject.get());\r
80     }\r
81 \r
82     void testKeyInfo3() {\r
83         string path=data_path + "KeyInfo3.xml";\r
84         ifstream fs(path.c_str());\r
85         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);\r
86         TS_ASSERT(doc!=NULL);\r
87 \r
88         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
89         TS_ASSERT(b!=NULL);\r
90 \r
91         auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));\r
92         TS_ASSERT(kiObject.get()!=NULL);\r
93         TS_ASSERT_THROWS(SchemaValidators.validate(kiObject.get()),ValidationException);\r
94     }\r
95 };\r