/*
* Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.opensaml.saml2.core;
import org.joda.time.DateTime;
import org.joda.time.chrono.ISOChronology;
import org.opensaml.common.BaseComplexSAMLObjectTestCase;
import org.opensaml.common.SAMLVersion;
import org.opensaml.xml.schema.XSBooleanValue;
/**
* Tests unmarshalling and marshalling for various request messages.
*/
public class AuthnRequestTest extends BaseComplexSAMLObjectTestCase {
/**
* Constructor
*/
public AuthnRequestTest(){
elementFile = "/data/org/opensaml/saml2/core/AuthnRequest.xml";
}
/** {@inheritDoc} */
public void testUnmarshall() {
AuthnRequest request = (AuthnRequest) unmarshallElement(elementFile);
assertNotNull("AuthnRequest was null", request);
assertEquals("ForceAuthn", true, request.isForceAuthn().booleanValue());
assertEquals("AssertionConsumerServiceURL", "http://www.example.com/", request.getAssertionConsumerServiceURL());
assertEquals("AttributeConsumingServiceIndex", 0, request.getAttributeConsumingServiceIndex().intValue());
assertEquals("ProviderName", "SomeProvider", request.getProviderName());
assertEquals("ID", "abe567de6", request.getID());
assertEquals("Version", SAMLVersion.VERSION_20.toString(), request.getVersion().toString());
assertEquals("IssueInstant", new DateTime(2005, 1, 31, 12, 0, 0, 0, ISOChronology.getInstanceUTC()), request.getIssueInstant());
assertEquals("Destination", "http://www.example.com/", request.getDestination());
assertEquals("Consent", "urn:oasis:names:tc:SAML:2.0:consent:obtained", request.getConsent());
assertEquals("Subject/NameID/@NameIdFormat", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", request.getSubject().getNameID().getFormat());
assertEquals("Subject/NameID contents", "j.doe@company.com", request.getSubject().getNameID().getValue());
Audience audience = request.getConditions().getAudienceRestrictions().get(0).getAudiences().get(0);
assertEquals("Conditions/AudienceRestriction[1]/Audience[1] contents", "urn:foo:sp.example.org", audience.getAudienceURI());
AuthnContextClassRef classRef = (AuthnContextClassRef) request.getRequestedAuthnContext().getAuthnContextClassRefs().get(0);
assertEquals("RequestedAuthnContext/AuthnContextClassRef[1] contents", "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", classRef.getAuthnContextClassRef());
}
/** {@inheritDoc} */
public void testMarshall() {
NameID nameid = (NameID) buildXMLObject(NameID.DEFAULT_ELEMENT_NAME);
nameid.setFormat("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
nameid.setValue("j.doe@company.com");
Subject subject = (Subject) buildXMLObject(Subject.DEFAULT_ELEMENT_NAME);
subject.setNameID(nameid);
Audience audience = (Audience) buildXMLObject(Audience.DEFAULT_ELEMENT_NAME);
audience.setAudienceURI("urn:foo:sp.example.org");
AudienceRestriction ar = (AudienceRestriction) buildXMLObject(AudienceRestriction.DEFAULT_ELEMENT_NAME);
ar.getAudiences().add(audience);
Conditions conditions = (Conditions) buildXMLObject(Conditions.DEFAULT_ELEMENT_NAME);
conditions.getAudienceRestrictions().add(ar);
AuthnContextClassRef classRef = (AuthnContextClassRef) buildXMLObject(AuthnContextClassRef.DEFAULT_ELEMENT_NAME);
classRef.setAuthnContextClassRef("urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport");
RequestedAuthnContext rac = (RequestedAuthnContext) buildXMLObject(RequestedAuthnContext.DEFAULT_ELEMENT_NAME);
rac.getAuthnContextClassRefs().add(classRef);
AuthnRequest request = (AuthnRequest) buildXMLObject(AuthnRequest.DEFAULT_ELEMENT_NAME);
request.setSubject(subject);
request.setConditions(conditions);
request.setRequestedAuthnContext(rac);
request.setForceAuthn(XSBooleanValue.valueOf("true"));
request.setAssertionConsumerServiceURL("http://www.example.com/");
request.setAttributeConsumingServiceIndex(0);
request.setProviderName("SomeProvider");
request.setID("abe567de6");
request.setVersion(SAMLVersion.VERSION_20);
request.setIssueInstant(new DateTime(2005, 1, 31, 12, 0, 0, 0, ISOChronology.getInstanceUTC()));
request.setDestination("http://www.example.com/");
request.setConsent("urn:oasis:names:tc:SAML:2.0:consent:obtained");
assertEquals("Marshalled AuthnRequest", expectedDOM, request);
}
}