2 * Copyright 2001-2006 Internet2
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 #include "internal.h"
\r
18 #include <saml/saml2/core/Assertions.h>
\r
19 #include <saml/util/SAMLConstants.h>
\r
21 using namespace opensaml::saml2;
\r
24 This tests building an element of type NameIDType with a non-SAML element name and namespace
\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
34 //TODO possibly move these up to SAMLObjectBaseTestCase, for use in optional helper methods below
\r
37 XMLCh* elementPrefix;
\r
38 const XMLCh* typeName;
\r
39 const XMLCh* typeNS;
\r
40 const XMLCh* typePrefix;
\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
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
57 singleElementFile = data_path + "saml2/core/impl/NameIDType.xml";
\r
58 singleElementOptionalAttributesFile = data_path + "saml2/core/impl/NameIDTypeOptionalAttributes.xml";
\r
59 SAMLObjectBaseTestCase::setUp();
\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
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
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
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
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
97 checkNameAndType(nameid);
\r
99 assertEquals("Element content", expectedContent, nameid->getName());
\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
107 checkNameAndType(nameid);
\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
117 void testSingleElementMarshall() {
\r
118 NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
\r
119 TS_ASSERT(nameid!=NULL);
\r
120 checkNameAndType(nameid);
\r
122 nameid->setName(expectedContent);
\r
123 assertEquals(expectedDOM, nameid);
\r
126 void testSingleElementOptionalAttributesMarshall() {
\r
127 NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
\r
128 TS_ASSERT(nameid!=NULL);
\r
129 checkNameAndType(nameid);
\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