X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=blobdiff_plain;f=xmltoolingtest%2FKeyInfoTest.h;h=26b85790ae34d62ea755cf0d81bb205c3e67bc81;hp=06b208a2dca1c3ff2a886cb3994974e040dbdb98;hb=e5a84f387d04247eb6938270f0222cf001bb716e;hpb=cea613c89d3f3e028ade4fe3fc9763f6993b94b5 diff --git a/xmltoolingtest/KeyInfoTest.h b/xmltoolingtest/KeyInfoTest.h index 06b208a..26b8579 100644 --- a/xmltoolingtest/KeyInfoTest.h +++ b/xmltoolingtest/KeyInfoTest.h @@ -1,63 +1,116 @@ -/* - * Copyright 2001-2005 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "XMLObjectBaseTestCase.h" - -#include -#include - -using namespace xmlsignature; - -class KeyInfoTest : public CxxTest::TestSuite { -public: - KeyInfoTest() {} - - void setUp() { - XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder()); - } - - void tearDown() { - XMLObjectBuilder::deregisterDefaultBuilder(); - } - - void testKeyInfo1() { - TS_TRACE("testKeyInfo1"); - - string path=data_path + "KeyInfo1.xml"; - ifstream fs(path.c_str()); - DOMDocument* doc=validatingPool->parse(fs); - TS_ASSERT(doc!=NULL); - - const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); - TS_ASSERT(b!=NULL); - - auto_ptr kiObject( - dynamic_cast(b->buildFromDocument(doc)) - ); - TS_ASSERT(kiObject.get()!=NULL); - TSM_ASSERT_EQUALS("Number of child elements was not expected value", - 3, kiObject->getOrderedChildren().size()); - TSM_ASSERT_EQUALS("Number of child elements was not expected value", - 1, kiObject->getKeyValues().size()); - TSM_ASSERT_EQUALS("Number of child elements was not expected value", - 1, kiObject->getX509Datas().front()->getX509Certificates().size()); - - auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org"); - TSM_ASSERT_SAME_DATA("KeyName was not expected value", - expected.get(), kiObject->getKeyNames().front()->getName(), XMLString::stringLen(expected.get())); - } - -}; +/* + * Copyright 2001-2010 Internet2 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "XMLObjectBaseTestCase.h" + +#include +#include +#include + +using namespace xmlsignature; + +class KeyInfoTest : public CxxTest::TestSuite { +public: + KeyInfoTest() {} + + void setUp() { + XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder()); + } + + void tearDown() { + XMLObjectBuilder::deregisterDefaultBuilder(); + } + + void testKeyInfo1() { + string path=data_path + "KeyInfo1.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); + TS_ASSERT(doc!=nullptr); + + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + + auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 4, kiObject->getOrderedChildren().size()); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 1, kiObject->getKeyValues().size()); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 1, kiObject->getX509Datas().front()->getX509Certificates().size()); + + auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org"); + TSM_ASSERT("KeyName was not expected value", XMLString::equals(expected.get(), kiObject->getKeyNames().front()->getName())); + + SchemaValidators.validate(kiObject.get()); + } + + void testKeyInfo2() { + string path=data_path + "KeyInfo2.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); + TS_ASSERT(doc!=nullptr); + + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + + auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 2, kiObject->getOrderedChildren().size()); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 1, kiObject->getRetrievalMethods().size()); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 2, kiObject->getSPKIDatas().front()->getSPKISexps().size()); + + SchemaValidators.validate(kiObject.get()); + } + + void testKeyInfo3() { + string path=data_path + "KeyInfo3.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs); + TS_ASSERT(doc!=nullptr); + + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + + auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + TS_ASSERT_THROWS(SchemaValidators.validate(kiObject.get()),ValidationException); + } + + void testKeyInfo4() { + string path=data_path + "KeyInfo4.xml"; + ifstream fs(path.c_str()); + DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs); + TS_ASSERT(doc!=nullptr); + + const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement()); + TS_ASSERT(b!=nullptr); + + auto_ptr kiObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(kiObject.get()!=nullptr); + TSM_ASSERT_EQUALS("Number of child elements was not expected value", + 1, kiObject->getKeyValues().size()); + ECKeyValue* kv = kiObject->getKeyValues().front()->getECKeyValue(); + TSM_ASSERT("Missing ECKeyValue", kv!=nullptr); + TSM_ASSERT("Missing NamedCurve", kv->getNamedCurve()!=nullptr); + TSM_ASSERT("Missing PublicKey", kv->getPublicKey()!=nullptr); + + SchemaValidators.validate(kiObject.get()); + } +};