Format ONAP-XACML and add JUnit
[policy/engine.git] / ONAP-XACML / src / test / java / org / onap / policy / xacml / test / util / XACMLPolicyScannerTest.java
index 0270a89..08d8999 100644 (file)
@@ -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
  * ================================================================================
  * 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<String> returnValue =
-                    XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue);
+            List<String> 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;
+        }
+
+    }
 }