/* * 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.saml1.core.impl; import javax.xml.namespace.QName; import org.opensaml.common.BaseSAMLObjectProviderTestCase; import org.opensaml.common.xml.SAMLConstants; import org.opensaml.saml1.core.Action; import org.opensaml.saml1.core.AuthorizationDecisionStatement; import org.opensaml.saml1.core.DecisionTypeEnumeration; import org.opensaml.saml1.core.Evidence; import org.opensaml.saml1.core.Subject; import org.opensaml.xml.io.UnmarshallingException; import org.opensaml.xml.parse.XMLParserException; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * */ public class AuthorizationDecisionStatementTest extends BaseSAMLObjectProviderTestCase { /** name used to generate objects */ private final QName qname; /** Value for Resource attribute specified in test file with attributes */ private final String expectedResource = "resource"; /** Value for Resource attribute specified in test file with attributes */ private final DecisionTypeEnumeration expectedDecision = DecisionTypeEnumeration.PERMIT; /** File with the AuthorizationDecisionStatement with illegal Decision type */ private String illegalAttributesFile; /** * Constructor */ public AuthorizationDecisionStatementTest() { super(); singleElementFile = "/data/org/opensaml/saml1/impl/singleAuthorizationDecisionStatement.xml"; singleElementOptionalAttributesFile = "/data/org/opensaml/saml1/impl/singleAuthorizationDecisionStatementAttributes.xml"; childElementsFile = "/data/org/opensaml/saml1/impl/AuthorizationDecisionStatementWithChildren.xml"; illegalAttributesFile = "/data/org/opensaml/saml1/impl/singleAuthorizationDecisionStatementAttributesInvalid.xml"; qname = new QName(SAMLConstants.SAML1_NS, AuthorizationDecisionStatement.DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX); } /** {@inheritDoc} */ public void testSingleElementUnmarshall() { AuthorizationDecisionStatement authorizationDecisionStatement; authorizationDecisionStatement = (AuthorizationDecisionStatement) unmarshallElement(singleElementFile); assertNull("Decision attribute null", authorizationDecisionStatement.getDecision()); assertNull("Resource attribute null", authorizationDecisionStatement.getResource()); assertEquals("<Actions> elements present", 0, authorizationDecisionStatement.getActions().size()); assertNull("<Evidence> element present", authorizationDecisionStatement.getEvidence()); } /** {@inheritDoc} */ public void testSingleElementOptionalAttributesUnmarshall() { AuthorizationDecisionStatement authorizationDecisionStatement; authorizationDecisionStatement = (AuthorizationDecisionStatement) unmarshallElement(singleElementOptionalAttributesFile); assertEquals("Resource attribute ", expectedResource, authorizationDecisionStatement.getResource()); assertEquals("Decision attribute ", expectedDecision.toString(), authorizationDecisionStatement.getDecision().toString()); try { Document doc = parser.parse(BaseSAMLObjectProviderTestCase.class .getResourceAsStream(illegalAttributesFile)); Element samlElement = doc.getDocumentElement(); authorizationDecisionStatement = (AuthorizationDecisionStatement) new AuthorizationDecisionStatementUnmarshaller() .unmarshall(samlElement); fail("illegal attribute successfully parsed"); } catch (UnmarshallingException e) { ; } catch (XMLParserException e) { fail("couldn't parse file" + e); e.printStackTrace(); } } /** {@inheritDoc} */ public void testChildElementsUnmarshall() { AuthorizationDecisionStatement authorizationDecisionStatement; authorizationDecisionStatement = (AuthorizationDecisionStatement) unmarshallElement(childElementsFile); assertNotNull("<Subject> element not present", authorizationDecisionStatement.getSubject()); assertNotNull("<Evidence> element not present", authorizationDecisionStatement.getEvidence()); assertNotNull("<Action> elements not present", authorizationDecisionStatement.getActions()); assertEquals("Count of <Action> elements ", 3, authorizationDecisionStatement.getActions().size()); } /** {@inheritDoc} */ public void testSingleElementMarshall() { assertEquals(expectedDOM, buildXMLObject(qname)); } /** {@inheritDoc} */ public void testSingleElementOptionalAttributesMarshall() { AuthorizationDecisionStatement authorizationDecisionStatement; authorizationDecisionStatement = (AuthorizationDecisionStatement) buildXMLObject(qname); authorizationDecisionStatement.setDecision(expectedDecision); authorizationDecisionStatement.setResource(expectedResource); assertEquals(expectedOptionalAttributesDOM, authorizationDecisionStatement); } /** {@inheritDoc} */ public void testChildElementsMarshall() { AuthorizationDecisionStatement authorizationDecisionStatement; authorizationDecisionStatement = (AuthorizationDecisionStatement) buildXMLObject(qname); QName oqname = new QName(SAMLConstants.SAML1_NS, Subject.DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX); authorizationDecisionStatement.setSubject((Subject) buildXMLObject(oqname)); oqname = new QName(SAMLConstants.SAML1_NS, Action.DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX); authorizationDecisionStatement.getActions().add((Action) buildXMLObject(oqname)); authorizationDecisionStatement.getActions().add((Action) buildXMLObject(oqname)); authorizationDecisionStatement.getActions().add((Action) buildXMLObject(oqname)); oqname = new QName(SAMLConstants.SAML1_NS, Evidence.DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX); authorizationDecisionStatement.setEvidence((Evidence) buildXMLObject(oqname)); authorizationDecisionStatement.setEvidence((Evidence) buildXMLObject(oqname)); assertEquals(expectedChildElementsDOM, authorizationDecisionStatement); } }