From eda0ad937fc69dbf53a615f420c11eb352c9cbe7 Mon Sep 17 00:00:00 2001 From: Pamela Dragosh Date: Tue, 19 Nov 2019 14:54:11 -0500 Subject: [PATCH] Add ONAP-XACML StdEngine tests Re-worked some JUnits to ensure they really are testing correctly. added coverage to the factory and std engine for easy exception conditions. Issue-ID: POLICY-2242 Change-Id: Iff6a390bff871fea2836336b77567f4a35720dfd Signed-off-by: Pamela Dragosh --- .../org/onap/policy/xacml/std/pap/StdEngine.java | 14 --- .../xacml/api/pap/ONAPPapEngineFactoryTest.java | 38 ++++++++ .../xacml/test/std/pap/StdEngineFactoryTest.java | 106 +++++++++++++++++---- .../policy/xacml/test/std/pap/StdEngineTest.java | 11 +++ 4 files changed, 136 insertions(+), 33 deletions(-) create mode 100644 ONAP-XACML/src/test/java/org/onap/policy/xacml/api/pap/ONAPPapEngineFactoryTest.java diff --git a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdEngine.java b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdEngine.java index 464313e0e..425e0bf6a 100644 --- a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdEngine.java +++ b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdEngine.java @@ -685,20 +685,6 @@ public class StdEngine extends StdPDPItemSetChangeNotifier implements PAPPolicyE } } - /** - * removeGroupProperties. - * - * @param id String - * @param properties Properties - */ - public static void removeGroupProperties(String id, Properties properties) { - for (Object key : properties.keySet()) { - if (key.toString().startsWith(id + ".")) { - properties.remove(key); - } - } - } - /** * setGroupProperties. * diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/api/pap/ONAPPapEngineFactoryTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/api/pap/ONAPPapEngineFactoryTest.java new file mode 100644 index 000000000..94b28b260 --- /dev/null +++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/api/pap/ONAPPapEngineFactoryTest.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-XACML + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.xacml.api.pap; + +import static org.junit.Assert.assertNotNull; + +import com.att.research.xacml.util.FactoryException; +import org.junit.Test; +import org.onap.policy.xacml.std.pap.StdEngineFactory; + +public class ONAPPapEngineFactoryTest { + + @Test + public void test() throws FactoryException { + ONAPPapEngineFactory factory = + ONAPPapEngineFactory.newInstance(StdEngineFactory.class.getName()); + assertNotNull(factory); + } + +} diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineFactoryTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineFactoryTest.java index 43d019d6d..b7fb32a3b 100644 --- a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineFactoryTest.java +++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineFactoryTest.java @@ -22,32 +22,71 @@ package org.onap.policy.xacml.test.std.pap; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; import com.att.research.xacml.api.pap.PAPException; import com.att.research.xacml.std.pap.StdEngine; import com.att.research.xacml.util.FactoryException; - +import java.io.File; import java.io.IOException; import java.util.Properties; - +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.onap.policy.xacml.api.pap.PAPPolicyEngine; import org.onap.policy.xacml.std.pap.StdEngineFactory; public class StdEngineFactoryTest { + + private static String systemProperty; + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + @BeforeClass + public static void saveSystemProperty() { + systemProperty = System.getProperty(StdEngine.PROP_PAP_REPO); + } + + /** + * restoreSystemProperty. + */ + @AfterClass + public static void restoreSystemProperty() { + if (systemProperty != null) { + System.setProperty(StdEngine.PROP_PAP_REPO, systemProperty); + } else { + System.clearProperty(StdEngine.PROP_PAP_REPO); + } + } + @Test public void testStdEngineFactory() throws FactoryException, PAPException, IOException { StdEngineFactory stdFactory = new StdEngineFactory(); System.setProperty("xacml.pap.pdps", "src/test/resources/pdps"); - assertTrue(stdFactory.newEngine() != null); + assertNotNull(stdFactory.newEngine()); Properties properties = new Properties(); properties.setProperty("xacml.pap.pdps", "src/test/resources/pdps"); - assertTrue(stdFactory.newEngine(properties) != null); + assertNotNull(stdFactory.newEngine(properties)); StdEngineFactory stdFactoryNew = new StdEngineFactory(); System.setProperty("xacml.pap.pdps", "src/test/resources/pdpstest"); - assertTrue(stdFactoryNew.newEngine() != null); + PAPPolicyEngine engine = stdFactoryNew.newEngine(); + assertNotNull(engine); + + assertThatExceptionOfType(NullPointerException.class).isThrownBy(() -> + engine.newGroup(null, null) + ); + + assertThatExceptionOfType(NullPointerException.class).isThrownBy(() -> + engine.movePDP(null, null) + ); + } @Test @@ -57,25 +96,54 @@ public class StdEngineFactoryTest { String tmpdir = System.getProperty("java.io.tmpdir"); props.setProperty(StdEngine.PROP_PAP_REPO, tmpdir); - // Set the system property temporarily - String systemKey = StdEngine.PROP_PAP_REPO; - String oldProperty = System.getProperty(systemKey); - System.setProperty(systemKey, tmpdir); - // Test factory failure cases try { StdEngineFactory factory = new StdEngineFactory(); - factory.newEngine(); - factory.newEngine(props); + assertNotNull(factory.newEngine()); + assertNotNull(factory.newEngine(props)); } catch (Exception ex) { fail("Not expecting any exceptions: " + ex); } - // Restore the original system property - if (oldProperty != null) { - System.setProperty(systemKey, oldProperty); - } else { - System.clearProperty(systemKey); - } + } + + @Test + public void testException() throws FactoryException, PAPException, IOException { + Properties props = new Properties(); + File myFolder = folder.newFolder("idontexist"); + props.setProperty(StdEngine.PROP_PAP_REPO, myFolder.getAbsolutePath()); + StdEngineFactory factory = new StdEngineFactory(); + assertNotNull(factory.newEngine(props)); + + // + // + // + myFolder.setReadOnly(); + assertThatExceptionOfType(PAPException.class).isThrownBy(() -> + factory.newEngine(props) + ); + + // + // + // + File myFile = folder.newFile("iamafile"); + props.setProperty(StdEngine.PROP_PAP_REPO, myFile.getAbsolutePath()); + assertThatExceptionOfType(PAPException.class).isThrownBy(() -> + factory.newEngine(props) + ); + + // + // + // + props.setProperty(StdEngine.PROP_PAP_REPO, myFolder.getAbsolutePath() + "/badparent/dontexist"); + assertNull(factory.newEngine(props)); + + // + // + // + System.setProperty(StdEngine.PROP_PAP_REPO, myFolder.getAbsolutePath() + "/badparent/dontexist"); + + assertNull(factory.newEngine()); + } } diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java index b57a6be78..79c2893ff 100644 --- a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java +++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java @@ -62,6 +62,11 @@ public class StdEngineTest { @Rule public ExpectedException expectedException = ExpectedException.none(); + /** + * setUpClass. + * + * @throws IOException IOException + */ @BeforeClass public static void setUpClass() throws IOException { new File("target/test/resources/pdps").mkdirs(); @@ -73,6 +78,12 @@ public class StdEngineTest { StandardCopyOption.REPLACE_EXISTING); } + /** + * setUp. + * + * @throws PAPException PAPException + * @throws IOException IOException + */ @Before public void setUp() throws PAPException, IOException { -- 2.16.6