2 * Copyright 2001-2007 Internet2
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <saml/saml2/core/Assertions.h>
19 #include <saml/util/SAMLConstants.h>
21 using namespace opensaml::saml2;
24 This tests building an element of type NameIDType with a non-SAML element name and namespace
27 class NameIDType20Test : public CxxTest::TestSuite, public SAMLObjectBaseTestCase {
28 XMLCh* expectedNameQualifier;
29 XMLCh* expectedSPNameQualifier;
30 XMLCh* expectedFormat;
31 XMLCh* expectedSPProvidedID;
32 XMLCh* expectedContent;
34 //TODO possibly move these up to SAMLObjectBaseTestCase, for use in optional helper methods below
38 const XMLCh* typeName;
40 const XMLCh* typePrefix;
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");
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;
57 singleElementFile = data_path + "saml2/core/impl/NameIDType.xml";
58 singleElementOptionalAttributesFile = data_path + "saml2/core/impl/NameIDTypeOptionalAttributes.xml";
59 SAMLObjectBaseTestCase::setUp();
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();
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());
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());
85 //TODO possibly move this functionality up to SAMLObjectBaseTestCase, as optional helper method
86 XMLObject * buildObject() {
87 const XMLObjectBuilder* builder = XMLObjectBuilder::getBuilder(QName(typeNS,typeName));
88 QName type(typeNS,typeName,typePrefix);
89 return builder->buildObject(elementNS, elementName, elementPrefix, &type);
92 void testSingleElementUnmarshall() {
93 auto_ptr<XMLObject> xo(unmarshallElement(singleElementFile));
94 NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
95 TS_ASSERT(nameid!=NULL);
97 checkNameAndType(nameid);
99 assertEquals("Element content", expectedContent, nameid->getName());
102 void testSingleElementOptionalAttributesUnmarshall() {
103 auto_ptr<XMLObject> xo(unmarshallElement(singleElementOptionalAttributesFile));
104 NameIDType* nameid = dynamic_cast<NameIDType*>(xo.get());
105 TS_ASSERT(nameid!=NULL);
107 checkNameAndType(nameid);
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());
117 void testSingleElementMarshall() {
118 NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
119 TS_ASSERT(nameid!=NULL);
120 checkNameAndType(nameid);
122 nameid->setName(expectedContent);
123 assertEquals(expectedDOM, nameid);
126 void testSingleElementOptionalAttributesMarshall() {
127 NameIDType* nameid = dynamic_cast<NameIDType*>(buildObject());
128 TS_ASSERT(nameid!=NULL);
129 checkNameAndType(nameid);
131 nameid->setNameQualifier(expectedNameQualifier);
132 nameid->setSPNameQualifier(expectedSPNameQualifier);
133 nameid->setFormat(expectedFormat);
134 nameid->setSPProvidedID(expectedSPProvidedID);
135 nameid->setName(expectedContent);
136 assertEquals(expectedOptionalAttributesDOM, nameid);