X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ONAP-XACML%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Ftest%2Futil%2FXACMLPolicyScannerTest.java;h=08d899949f6b92a18f81b1d19606394dbd859ce9;hb=76ebaafa2e724712d03106eaf2711d89878715ae;hp=09dcf837f9aff4ca40ea2f2ab5ced126e37f4564;hpb=073cc188efe9abb4c010cf674e34e2cf46ef1c52;p=policy%2Fengine.git 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 09dcf837f..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,14 +2,16 @@ * ============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 * ================================================================================ * 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. @@ -17,72 +19,229 @@ * 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 { - private static final Log logger = LogFactory.getLog(XACMLPolicyScannerTest.class); - private static Path configPolicyPathValue; - private static Path actionPolicyPathValue; - - @Before - public void setUp() { - File templateFile; - ClassLoader classLoader = getClass().getClassLoader(); + private static final Log logger = LogFactory.getLog(XACMLPolicyScannerTest.class); + 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()); + configPolicyPathValue = templateFile.toPath(); + templateFile = new File(classLoader.getResource("Action_TestActionPolicy.1.xml").getFile()); + actionPolicyPathValue = templateFile.toPath(); + } catch (Exception e1) { + logger.error("Exception Occured" + e1); + } + } + + @Test + public void xacmlPolicyScannerTest() throws IOException { + Callback callback = null; try { - templateFile = new File(classLoader.getResource("Config_SampleTest1206.1.xml").getFile()); - configPolicyPathValue = templateFile.toPath(); - templateFile = new File(classLoader.getResource("Action_TestActionPolicy.1.xml").getFile()); - actionPolicyPathValue = templateFile.toPath(); - } catch (Exception e1) { - logger.error("Exception Occured"+e1); - } - } - - @Test - public void xacmlPolicyScannerTest() throws IOException{ - Callback callback = null; - try{ - XACMLPolicyScanner actionScanner = new XACMLPolicyScanner(actionPolicyPathValue, callback); - assertTrue(actionScanner.getPolicyObject() != null); - Object actionObject = actionScanner.scan(); - assertTrue(actionObject != null); - - XACMLPolicyScanner scanner = new XACMLPolicyScanner(configPolicyPathValue, callback); - assertTrue(scanner.getPolicyObject() != null); - Object object = scanner.scan(); - assertTrue(object != null); - String id = XACMLPolicyScanner.getID(scanner.getPolicyObject()); - assertTrue(id.equals("urn:com:xacml:policy:id:0b67998b-57e2-4e25-9ea9-f9154bf18df1")); - String version = XACMLPolicyScanner.getVersion(scanner.getPolicyObject()); - assertTrue(version.equals("1")); - String versionFromPath = XACMLPolicyScanner.getVersion(configPolicyPathValue); - assertTrue(versionFromPath.equals("1")); - List returnValue = XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue); - assertTrue(returnValue.get(0).equals("test")); - String createdBy = XACMLPolicyScanner.getCreatedBy(configPolicyPathValue); - assertTrue(createdBy.equals("test")); - String modifiedBy = XACMLPolicyScanner.getModifiedBy(configPolicyPathValue); - assertTrue(modifiedBy.equals("test")); - }catch(Exception e){ - fail(); - logger.error("Exception Occured"+e); - } - } + XACMLPolicyScanner actionScanner = new XACMLPolicyScanner(actionPolicyPathValue, callback); + assertNotNull(actionScanner.getPolicyObject()); + Object actionObject = actionScanner.scan(); + assertNotNull(actionObject); + + XACMLPolicyScanner scanner = new XACMLPolicyScanner(configPolicyPathValue, callback); + assertTrue(scanner.getPolicyObject() != null); + Object object = scanner.scan(); + assertTrue(object != null); + String id = XACMLPolicyScanner.getID(scanner.getPolicyObject()); + assertTrue(id.equals("urn:com:xacml:policy:id:0b67998b-57e2-4e25-9ea9-f9154bf18df1")); + String version = XACMLPolicyScanner.getVersion(scanner.getPolicyObject()); + assertTrue(version.equals("1")); + String versionFromPath = XACMLPolicyScanner.getVersion(configPolicyPathValue); + assertTrue(versionFromPath.equals("1")); + List returnValue = XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue); + assertTrue(returnValue.get(0).equals("test")); + String createdBy = XACMLPolicyScanner.getCreatedBy(configPolicyPathValue); + assertTrue(createdBy.equals("test")); + String modifiedBy = XACMLPolicyScanner.getModifiedBy(configPolicyPathValue); + assertTrue(modifiedBy.equals("test")); + } catch (Exception e) { + fail(); + 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; + } + + } }