X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-XACML%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Ftest%2Futil%2FXACMLPolicyScannerTest.java;h=08d899949f6b92a18f81b1d19606394dbd859ce9;hp=0270a89011820de82ebc5ad3fe943e1b68dd13d8;hb=d089848fdb0beef8446bdcf60cdb14e4655a93e5;hpb=49657344fb0d436f97af38e71d31a6f8ddbc28bf diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/util/XACMLPolicyScannerTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/util/XACMLPolicyScannerTest.java index 0270a8901..08d899949 100644 --- a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/util/XACMLPolicyScannerTest.java +++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/util/XACMLPolicyScannerTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-XACML * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2019 Samsung * ================================================================================ @@ -19,20 +19,38 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.xacml.test.util; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import com.att.research.xacml.api.Advice; +import com.att.research.xacml.api.Attribute; +import com.att.research.xacml.api.Obligation; +import com.att.research.xacml.util.XACMLPolicyScanner.Callback; +import com.att.research.xacml.util.XACMLPolicyScanner.CallbackResult; import java.io.File; import java.io.IOException; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.IdReferenceType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.Test; import org.onap.policy.xacml.util.XACMLPolicyScanner; -import com.att.research.xacml.util.XACMLPolicyScanner.Callback; public class XACMLPolicyScannerTest { @@ -40,16 +58,17 @@ public class XACMLPolicyScannerTest { private static Path configPolicyPathValue; private static Path actionPolicyPathValue; + /** + * setUp. + */ @Before public void setUp() { File templateFile; ClassLoader classLoader = getClass().getClassLoader(); try { - templateFile = - new File(classLoader.getResource("Config_SampleTest1206.1.xml").getFile()); + templateFile = new File(classLoader.getResource("Config_SampleTest1206.1.xml").getFile()); configPolicyPathValue = templateFile.toPath(); - templateFile = - new File(classLoader.getResource("Action_TestActionPolicy.1.xml").getFile()); + templateFile = new File(classLoader.getResource("Action_TestActionPolicy.1.xml").getFile()); actionPolicyPathValue = templateFile.toPath(); } catch (Exception e1) { logger.error("Exception Occured" + e1); @@ -60,11 +79,10 @@ public class XACMLPolicyScannerTest { public void xacmlPolicyScannerTest() throws IOException { Callback callback = null; try { - XACMLPolicyScanner actionScanner = - new XACMLPolicyScanner(actionPolicyPathValue, callback); - assertTrue(actionScanner.getPolicyObject() != null); + XACMLPolicyScanner actionScanner = new XACMLPolicyScanner(actionPolicyPathValue, callback); + assertNotNull(actionScanner.getPolicyObject()); Object actionObject = actionScanner.scan(); - assertTrue(actionObject != null); + assertNotNull(actionObject); XACMLPolicyScanner scanner = new XACMLPolicyScanner(configPolicyPathValue, callback); assertTrue(scanner.getPolicyObject() != null); @@ -76,8 +94,7 @@ public class XACMLPolicyScannerTest { assertTrue(version.equals("1")); String versionFromPath = XACMLPolicyScanner.getVersion(configPolicyPathValue); assertTrue(versionFromPath.equals("1")); - List returnValue = - XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue); + List returnValue = XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue); assertTrue(returnValue.get(0).equals("test")); String createdBy = XACMLPolicyScanner.getCreatedBy(configPolicyPathValue); assertTrue(createdBy.equals("test")); @@ -88,4 +105,143 @@ public class XACMLPolicyScannerTest { logger.error("Exception Occured" + e); } } + + @Test + public void badPolicies() throws IOException { + Path unknown = Paths.get("foobar.xml"); + XACMLPolicyScanner scanner = new XACMLPolicyScanner(unknown, null); + assertNull(scanner.getPolicyObject()); + assertNull(scanner.scan()); + + assertThatExceptionOfType(IOException.class).isThrownBy(() -> { + XACMLPolicyScanner.getVersion(unknown); + }); + + Path logback = Paths.get("logback-test.xml"); + scanner = new XACMLPolicyScanner(logback, null); + } + + @Test + public void testRest() { + PolicySetType policySet = new PolicySetType(); + policySet.setPolicySetId("id1"); + policySet.setVersion("v1"); + XACMLPolicyScanner scanner = new XACMLPolicyScanner(policySet); + assertNotNull(scanner); + assertEquals(policySet, scanner.getPolicyObject()); + assertEquals(policySet.getPolicySetId(), XACMLPolicyScanner.getID(policySet)); + assertEquals(policySet.getVersion(), XACMLPolicyScanner.getVersion(policySet)); + + scanner.setCallback(new TestCallback(CallbackResult.CONTINUE)); + assertEquals(policySet, scanner.scan()); + assertEquals(policySet, scanner.scan(new TestCallback(CallbackResult.CONTINUE))); + assertEquals(policySet, scanner.scan(new TestCallback(CallbackResult.STOP))); + + PolicyType policy = new PolicyType(); + policy.setPolicyId("id2"); + policy.setVersion("v2"); + scanner = new XACMLPolicyScanner(policy); + assertNotNull(scanner); + assertEquals(policy, scanner.getPolicyObject()); + assertEquals(policy.getPolicyId(), XACMLPolicyScanner.getID(policy)); + assertEquals(policy.getVersion(), XACMLPolicyScanner.getVersion(policy)); + policy.setVersion(null); + assertNull(XACMLPolicyScanner.getVersion(policy)); + + assertNull(XACMLPolicyScanner.getID(new String())); + assertNull(XACMLPolicyScanner.getVersion(new String())); + + } + + @Test + public void testPolicySet() { + PolicySetType policySet = new PolicySetType(); + policySet.setPolicySetId("id1"); + policySet.setVersion("v1"); + + } + + class TestCallback implements Callback { + + CallbackResult begin = CallbackResult.CONTINUE; + + TestCallback(CallbackResult onBegin) { + begin = onBegin; + } + + @Override + public CallbackResult onBeginScan(Object root) { + return begin; + } + + @Override + public void onFinishScan(Object root) { + } + + @Override + public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPostVisitPolicySet(PolicySetType parent, PolicySetType policySet) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPreVisitPolicy(PolicySetType parent, PolicyType policy) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPostVisitPolicy(PolicySetType parent, PolicyType policy) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPostVisitRule(PolicyType parent, RuleType rule) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onAttribute(Object parent, Object container, Attribute attribute) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onObligation(Object parent, ObligationExpressionType expression, Obligation obligation) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onAdvice(Object parent, AdviceExpressionType expression, Advice advice) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onVariable(PolicyType policy, VariableDefinitionType variable) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onCondition(RuleType rule, ConditionType condition) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPolicySetIdReference(IdReferenceType reference, PolicySetType parent) { + return CallbackResult.CONTINUE; + } + + @Override + public CallbackResult onPolicyIdReference(IdReferenceType reference, PolicySetType parent) { + return CallbackResult.CONTINUE; + } + + } }