Switch to vector-based API.
[shibboleth/cpp-xmltooling.git] / xmltoolingtest / SOAPTest.h
1 /**
2  * Licensed to the University Corporation for Advanced Internet
3  * Development, Inc. (UCAID) under one or more contributor license
4  * agreements. See the NOTICE file distributed with this work for
5  * additional information regarding copyright ownership.
6  *
7  * UCAID licenses this file to you under the Apache License,
8  * Version 2.0 (the "License"); you may not use this file except
9  * in compliance with the License. You may obtain a copy of the
10  * License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17  * either express or implied. See the License for the specific
18  * language governing permissions and limitations under the License.
19  */
20
21 #include "XMLObjectBaseTestCase.h"
22
23 #include <fstream>
24 #include <xmltooling/soap/SOAP.h>
25 #include <xmltooling/validation/ValidatorSuite.h>
26
27 using namespace soap11;
28
29 class SOAPTest : public CxxTest::TestSuite {
30 public:
31     SOAPTest() {}
32
33     void testSOAPFault() {
34         string path=data_path + "SOAPFault.xml";
35         ifstream fs(path.c_str());
36         DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);
37         TS_ASSERT(doc!=nullptr);
38
39         const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
40         TS_ASSERT(b!=nullptr);
41
42         auto_ptr<Envelope> envObject(dynamic_cast<Envelope*>(b->buildFromDocument(doc)));
43         TS_ASSERT(envObject.get()!=nullptr);
44         TSM_ASSERT("SOAP Envelope missing Body", envObject->getBody() != nullptr);
45         TSM_ASSERT_EQUALS("SOAP Body missing Fault", 1, envObject->getBody()->getOrderedChildren().size());
46
47         SchemaValidators.validate(envObject.get());
48     }
49 };