From fb30e4699537608be1417e4b85e51a85875d8b87 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Thu, 12 May 2011 19:05:10 +0000 Subject: [PATCH] Add SOAP fault unit test. --- xmltoolingtest/Makefile.am | 1 + xmltoolingtest/SOAPTest.h | 46 +++++++++++++++++++++++++++++++++++++++ xmltoolingtest/data/SOAPFault.xml | 8 +++++++ 3 files changed, 55 insertions(+) create mode 100644 xmltoolingtest/SOAPTest.h create mode 100644 xmltoolingtest/data/SOAPFault.xml diff --git a/xmltoolingtest/Makefile.am b/xmltoolingtest/Makefile.am index be57473..a60d78a 100644 --- a/xmltoolingtest/Makefile.am +++ b/xmltoolingtest/Makefile.am @@ -36,6 +36,7 @@ xmltoolingtest_h = \ KeyInfoTest.h \ MarshallingTest.h \ NonVisibleNamespaceTest.h \ + SOAPTest.h \ UnmarshallingTest.h \ TemplateEngineTest.h \ xmltoolingtest.h \ diff --git a/xmltoolingtest/SOAPTest.h b/xmltoolingtest/SOAPTest.h new file mode 100644 index 0000000..0a064f1 --- /dev/null +++ b/xmltoolingtest/SOAPTest.h @@ -0,0 +1,46 @@ +/* + * Licensed to Internet2 under one or more contributor license agreements. + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. Internet2 licenses this file to you 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 soap11; + +class SOAPTest : public CxxTest::TestSuite { +public: + SOAPTest() {} + + void testSOAPFault() { + string path=data_path + "SOAPFault.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 envObject(dynamic_cast(b->buildFromDocument(doc))); + TS_ASSERT(envObject.get()!=nullptr); + TSM_ASSERT("SOAP Envelope missing Body", envObject->getBody() != nullptr); + TSM_ASSERT_EQUALS("SOAP Body missing Fault", 1, envObject->getBody()->getOrderedChildren().size()); + + SchemaValidators.validate(envObject.get()); + } +}; diff --git a/xmltoolingtest/data/SOAPFault.xml b/xmltoolingtest/data/SOAPFault.xml new file mode 100644 index 0000000..c7c874f --- /dev/null +++ b/xmltoolingtest/data/SOAPFault.xml @@ -0,0 +1,8 @@ + + + + S:Server + a message goes here + + + \ No newline at end of file -- 2.1.4