Change license header, remove stale pkg files.
[shibboleth/cpp-opensaml.git] / samltest / saml2 / core / impl / NameIDType20Test.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 "internal.h"
22 #include <saml/saml2/core/Assertions.h>
23 #include <saml/util/SAMLConstants.h>
24
25 using namespace opensaml::saml2;
26
27 /*
28    This tests building an element of type NameIDType with a non-SAML element name and namespace
29  */
30
31 class NameIDType20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
32     XMLCh* expectedNameQualifier; 
33     XMLCh* expectedSPNameQualifier; 
34     XMLCh* expectedFormat; 
35     XMLCh* expectedSPProvidedID; 
36     XMLCh* expectedContent; 
37
38     //TODO possibly move these up to SAMLObjectBaseTestCase, for use in optional helper methods below
39     XMLCh* elementName;
40     XMLCh* elementNS;
41     XMLCh* elementPrefix;
42     const XMLCh* typeName;
43     const XMLCh* typeNS;
44     const XMLCh* typePrefix;
45
46 public:
47     void setUp() {
48         expectedNameQualifier = XMLString::transcode("nq"); 
49         expectedSPNameQualifier = XMLString::transcode("spnq"); 
50         expectedFormat = XMLString::transcode("format"); 
51         expectedSPProvidedID = XMLString::transcode("spID"); 
52         expectedContent = XMLString::transcode("someNameID"); 
53
54         elementName = XMLString::transcode("Foo");;
55         elementNS = XMLString::transcode("http://www.example.org/test");
56         elementPrefix = XMLString::transcode("test");;
57         typeName = NameIDType::TYPE_NAME;
58         typeNS = samlconstants::SAML20_NS;
59         typePrefix = samlconstants::SAML20_PREFIX;
60
61         singleElementFile = data_path + "saml2/core/impl/NameIDType.xml";
62         singleElementOptionalAttributesFile = data_path + "saml2/core/impl/NameIDTypeOptionalAttributes.xml";
63         SAMLObjectBaseTestCase::setUp();
64     }
65     
66     void tearDown() {
67         XMLString::release(&expectedNameQualifier);
68         XMLString::release(&expectedSPNameQualifier);
69         XMLString::release(&expectedFormat);
70         XMLString::release(&expectedSPProvidedID);
71         XMLString::release(&expectedContent);
72         XMLString::release(&elementName);
73         XMLString::release(&elementNS);
74         XMLString::release(&elementPrefix);
75         SAMLObjectBaseTestCase::tearDown();
76     }
77
78     //TODO possibly move this functionality up to SAMLObjectBaseTestCase, as optional helper method
79     void checkNameAndType(XMLObject* xo) {
80         assertEquals("Element name", elementName, xo->getElementQName().getLocalPart());
81         assertEquals("Element namespace", elementNS, xo->getElementQName().getNamespaceURI());
82         assertEquals("Element namespace prefix", elementPrefix, xo->getElementQName().getPrefix());
83
84         assertEquals("Schema type name", typeName, xo->getSchemaType()->getLocalPart());
85         assertEquals("Schema type namespace", typeNS, xo->getSchemaType()->getNamespaceURI());
86         assertEquals("Schema type namespace prefix", typePrefix, xo->getSchemaType()->getPrefix());
87     }
88
89     //TODO possibly move this functionality up to SAMLObjectBaseTestCase, as optional helper method
90     XMLObject * buildObject() {
91         const XMLObjectBuilder* builder = XMLObjectBuilder::getBuilder(xmltooling::QName(typeNS,typeName));
92         xmltooling::QName type(typeNS,typeName,typePrefix);
93         return builder->buildObject(elementNS, elementName, elementPrefix, &type);
94     }
95
96     void testSingleElementUnmarshall() {
97         auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
98         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
99         TS_ASSERT(nameid!=nullptr);
100
101         checkNameAndType(nameid);
102
103         assertEquals("Element content", expectedContent, nameid->getName());
104     }
105
106     void testSingleElementOptionalAttributesUnmarshall() {
107         auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
108         NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
109         TS_ASSERT(nameid!=nullptr);
110
111         checkNameAndType(nameid);
112
113         assertEquals("NameQualifier attribute", expectedNameQualifier, nameid->getNameQualifier());
114         assertEquals("SPNameQualifier attribute", expectedSPNameQualifier, nameid->getSPNameQualifier());
115         assertEquals("Format attribute", expectedFormat, nameid->getFormat());
116         assertEquals("SPProvidedID attribute", expectedSPProvidedID, nameid->getSPProvidedID());
117         assertEquals("Element content", expectedContent, nameid->getName());
118     }
119
120
121     void testSingleElementMarshall() {
122         NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
123         TS_ASSERT(nameid!=nullptr);
124         checkNameAndType(nameid);
125
126         nameid->setName(expectedContent);
127         assertEquals(expectedDOM, nameid);
128     }
129
130     void testSingleElementOptionalAttributesMarshall() {
131         NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
132         TS_ASSERT(nameid!=nullptr);
133         checkNameAndType(nameid);
134
135         nameid->setNameQualifier(expectedNameQualifier);
136         nameid->setSPNameQualifier(expectedSPNameQualifier);
137         nameid->setFormat(expectedFormat);
138         nameid->setSPProvidedID(expectedSPProvidedID);
139         nameid->setName(expectedContent);
140         assertEquals(expectedOptionalAttributesDOM, nameid);
141     }
142
143 };