Set fourth file version digit to signify rebuild.
[shibboleth/cpp-opensaml.git] / samltest / ArtifactMapTest.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/SAMLConfig.h>
23 #include "saml/binding/ArtifactMap.h"
24 #include <saml/saml2/binding/SAML2ArtifactType0004.h>
25 #include <saml/saml2/core/Protocols.h>
26 #include <xmltooling/security/SecurityHelper.h>
27
28 using namespace opensaml::saml2p;
29 using namespace opensaml;
30 using namespace std;
31
32 class ArtifactMapTest : public CxxTest::TestSuite
33 {
34 public:
35     string providerIdStr;
36     string handle;
37     void setUp() {
38         if (handle.empty()) {
39             providerIdStr = "https://idp.org/SAML";
40             SAMLConfig::getConfig().generateRandomBytes(handle,SAML2ArtifactType0004::HANDLE_LENGTH);
41         }
42     }
43     void tearDown() {
44     }
45     void testArtifactMap(void) {
46         auto_ptr<Response> response(ResponseBuilder::buildResponse());
47
48         SAML2ArtifactType0004 artifact(
49             SecurityHelper::doHash("SHA1", providerIdStr.data(), providerIdStr.length(), false), 666, handle
50             );
51         
52         ArtifactMap* artifactMap = SAMLConfig::getConfig().getArtifactMap();
53         artifactMap->storeContent(response.get(), &artifact, providerIdStr.c_str());
54         response.release();
55
56         auto_ptr<XMLObject> xmlObject(artifactMap->retrieveContent(&artifact, providerIdStr.c_str()));
57         TSM_ASSERT_THROWS("Artifact resolution improperly succeeded.", artifactMap->retrieveContent(&artifact), BindingException);
58         TSM_ASSERT("Mapped content was not a Response.", dynamic_cast<Response*>(xmlObject.get())!=nullptr);
59     }
60 };