Convert from NULL macro to nullptr, remove unused zlib code.
[shibboleth/cpp-opensaml.git] / samltest / saml2 / core / impl / NameIDType20Test.h
1 /*
2  *  Copyright 2001-2010 Internet2
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "internal.h"
18 #include <saml/saml2/core/Assertions.h>
19 #include <saml/util/SAMLConstants.h>
20
21 using namespace opensaml::saml2;
22
23 /*
24    This tests building an element of type NameIDType with a non-SAML element name and namespace
25  */
26
27 class NameIDType20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
28     XMLCh* expectedNameQualifier; 
29     XMLCh* expectedSPNameQualifier; 
30     XMLCh* expectedFormat; 
31     XMLCh* expectedSPProvidedID; 
32     XMLCh* expectedContent; 
33
34     //TODO possibly move these up to SAMLObjectBaseTestCase, for use in optional helper methods below
35     XMLCh* elementName;
36     XMLCh* elementNS;
37     XMLCh* elementPrefix;
38     const XMLCh* typeName;
39     const XMLCh* typeNS;
40     const XMLCh* typePrefix;
41
42 public:
43     void setUp() {
44         expectedNameQualifier = XMLString::transcode("nq"); 
45         expectedSPNameQualifier = XMLString::transcode("spnq"); 
46         expectedFormat = XMLString::transcode("format"); 
47         expectedSPProvidedID = XMLString::transcode("spID"); 
48         expectedContent = XMLString::transcode("someNameID"); 
49
50         elementName = XMLString::transcode("Foo");;
51         elementNS = XMLString::transcode("http://www.example.org/test");
52         elementPrefix = XMLString::transcode("test");;
53         typeName = NameIDType::TYPE_NAME;
54         typeNS = samlconstants::SAML20_NS;
55         typePrefix = samlconstants::SAML20_PREFIX;
56
57         singleElementFile = data_path + "saml2/core/impl/NameIDType.xml";
58         singleElementOptionalAttributesFile = data_path + "saml2/core/impl/NameIDTypeOptionalAttributes.xml";
59         SAMLObjectBaseTestCase::setUp();
60     }
61     
62     void tearDown() {
63         XMLString::release(&expectedNameQualifier);
64         XMLString::release(&expectedSPNameQualifier);
65         XMLString::release(&expectedFormat);
66         XMLString::release(&expectedSPProvidedID);
67         XMLString::release(&expectedContent);
68         XMLString::release(&elementName);
69         XMLString::release(&elementNS);
70         XMLString::release(&elementPrefix);
71         SAMLObjectBaseTestCase::tearDown();
72     }
73
74     //TODO possibly move this functionality up to SAMLObjectBaseTestCase, as optional helper method
75     void checkNameAndType(XMLObject* xo) {
76         assertEquals("Element name", elementName, xo->getElementQName().getLocalPart());
77         assertEquals("Element namespace", elementNS, xo->getElementQName().getNamespaceURI());
78         assertEquals("Element namespace prefix", elementPrefix, xo->getElementQName().getPrefix());
79
80         assertEquals("Schema type name", typeName, xo->getSchemaType()->getLocalPart());
81         assertEquals("Schema type namespace", typeNS, xo->getSchemaType()->getNamespaceURI());
82         assertEquals("Schema type namespace prefix", typePrefix, xo->getSchemaType()->getPrefix());
83     }
84
85     //TODO possibly move this functionality up to SAMLObjectBaseTestCase, as optional helper method
86     XMLObject * buildObject() {
87         const XMLObjectBuilder* builder = XMLObjectBuilder::getBuilder(xmltooling::QName(typeNS,typeName));
88         xmltooling::QName type(typeNS,typeName,typePrefix);
89         return builder->buildObject(elementNS, elementName, elementPrefix, &type);
90     }
91
92     void testSingleElementUnmarshall() {
93         auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
94         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
95         TS_ASSERT(nameid!=nullptr);
96
97         checkNameAndType(nameid);
98
99         assertEquals("Element content", expectedContent, nameid->getName());
100     }
101
102     void testSingleElementOptionalAttributesUnmarshall() {
103         auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
104         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
105         TS_ASSERT(nameid!=nullptr);
106
107         checkNameAndType(nameid);
108
109         assertEquals("NameQualifier attribute", expectedNameQualifier, nameid->getNameQualifier());
110         assertEquals("SPNameQualifier attribute", expectedSPNameQualifier, nameid->getSPNameQualifier());
111         assertEquals("Format attribute", expectedFormat, nameid->getFormat());
112         assertEquals("SPProvidedID attribute", expectedSPProvidedID, nameid->getSPProvidedID());
113         assertEquals("Element content", expectedContent, nameid->getName());
114     }
115
116
117     void testSingleElementMarshall() {
118         NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
119         TS_ASSERT(nameid!=nullptr);
120         checkNameAndType(nameid);
121
122         nameid->setName(expectedContent);
123         assertEquals(expectedDOM, nameid);
124     }
125
126     void testSingleElementOptionalAttributesMarshall() {
127         NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
128         TS_ASSERT(nameid!=nullptr);
129         checkNameAndType(nameid);
130
131         nameid->setNameQualifier(expectedNameQualifier);
132         nameid->setSPNameQualifier(expectedSPNameQualifier);
133         nameid->setFormat(expectedFormat);
134         nameid->setSPProvidedID(expectedSPProvidedID);
135         nameid->setName(expectedContent);
136         assertEquals(expectedOptionalAttributesDOM, nameid);
137     }
138
139 };