/* The contents of this file are subject to the license and copyright terms * detailed in the license directory at the root of the source tree (also * available online at http://fedora-commons.org/license/). */ package fedora.server.security; import java.io.IOException; import org.junit.Test; import org.xml.sax.SAXException; import fedora.common.Constants; import fedora.server.errors.ValidationException; import fedora.server.utilities.StreamUtility; /** * Unit tests for PolicyParser. */ public class TestPolicyParser { public static final String POLICY_GOODENOUGH = "<Policy PolicyId='foo' RuleCombiningAlgId='urn:oasis:names:tc:" + "xacml:1.0:rule-combining-algorithm:first-applicable'/>"; public static final String POLICY_QUESTIONABLE = "<Policy unexpectedAttribute='thisOne' PolicyId='foo' RuleCombi" + "ningAlgId='urn:oasis:names:tc:xacml:1.0:rule-combining-algorit" + "hm:first-applicable'/>"; public static final String SCHEMA_GOODENOUGH = "<schema xmlns='" + Constants.XML_XSD.uri + "'><element name='P" + "olicy'><complexType><sequence><any minOccurs='0' maxOccurs='unb" + "ounded' processContents='skip'/></sequence><attribute name='Pol" + "icyId'/><attribute name='RuleCombiningAlgId'/></complexType></e" + "lement></schema>"; private static final String POLICY_BADROOT = "<not-a-policy/>"; private static final String POLICY_GOODROOT_NOCONTENT = "<Policy/>"; private static final String POLICY_MALFORMEDXML = "notxml"; private static final String SCHEMA_BAD = "<not-a-schema/>"; @Test (expected=SAXException.class) public void testConstructWithBadSchema() throws IOException, SAXException { new PolicyParser(StreamUtility.getStream(SCHEMA_BAD)); } @Test public void testConstructWithValidSchema() throws IOException, SAXException { new MockPolicyParser(); } @Test (expected=ValidationException.class) public void testParseMalformedXMLValidationFalse() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_MALFORMEDXML), false); } @Test (expected=ValidationException.class) public void testParseMalformedXMLValidationTrue() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_MALFORMEDXML), true); } @Test (expected=ValidationException.class) public void testParseBadRootValidationFalse() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_BADROOT), false); } @Test (expected=ValidationException.class) public void testParseBadRootValidationTrue() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_BADROOT), true); } @Test (expected=ValidationException.class) public void testParseGoodRootNoContentValidationFalse() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_GOODROOT_NOCONTENT), false); } @Test (expected=ValidationException.class) public void testParseGoodRootNoContentValidationTrue() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_GOODROOT_NOCONTENT), true); } @Test public void testParseGoodRootQuestionableContentValidationFalse() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_QUESTIONABLE), false); } @Test (expected=ValidationException.class) public void testParseGoodRootQuestionableContentValidationTrue() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_QUESTIONABLE), true); } @Test public void testParseGoodRootGoodContentValidationFalse() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_GOODENOUGH), false); } @Test public void testParseGoodRootGoodContentValidationTrue() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.parse(StreamUtility.getStream(POLICY_GOODENOUGH), true); } @Test public void testParseGoodRootGoodContentValidationTrueWithCopy() throws IOException, SAXException, ValidationException { PolicyParser parser = new MockPolicyParser(); parser.copy().parse(StreamUtility.getStream(POLICY_GOODENOUGH), true); } // Supports legacy test runners public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(TestPolicyParser.class); } }