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