Cleanup POLICY-SDK-APP CheckPDP 47/96747/2
authorPamela Dragosh <pdragosh@research.att.com>
Tue, 8 Oct 2019 14:01:23 +0000 (10:01 -0400)
committerPamela Dragosh <pdragosh@research.att.com>
Tue, 8 Oct 2019 18:47:43 +0000 (14:47 -0400)
Fixed sonar issues and added a small amount of code coverage.

CheckPDP was renamed to comply with 2 consecutive capital letters. Various
sonar issues done.
Very difficult to get coverage on remaining area - over 82% anyway.

RESTfulPAPEngine was updated to use the new renamed class and methods.
Sonar issues were taken care of for the most part and added some coverage
by consolidating the JUnit tests.

Added in assertj as we will utilize that more throughout the repo.

Issue-ID: POLICY-2133
Change-Id: Id0a9b050ebe373e155878699366d78df71bd0554
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPdpProperties.java [moved from POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java with 86% similarity]
POLICY-SDK-APP/src/main/java/org/onap/policy/admin/RESTfulPAPEngine.java
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java [deleted file]
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPdpPropertiesTest.java [new file with mode: 0644]
POLICY-SDK-APP/src/test/java/org/onap/policy/admin/RESTfulPAPEngineTest.java
pom.xml

@@ -51,19 +51,19 @@ import org.onap.policy.xacml.api.XACMLErrorConstants;
  * may be ok for a highly controlled production environment in which nothing changes, but not a very good
  * implementation.
  *
- * The reset() method has been added to assist with the above problem in order to acquire >80% JUnit code coverage.
+ * <p>The reset() method has been added to assist with the above problem in order to acquire >80% JUnit code coverage.
  *
- * This static class doesn't really check a PDP, it simply loads a properties file and tried to ensure that a valid URL
- * exists for a PDP along with user/password.
+ * <p>This static class doesn't really check a PDP, it simply loads a properties file and tried to ensure 
+ * that a valid URL exists for a PDP along with user/password.
  */
-public class CheckPDP {
+public class CheckPdpProperties {
 
     private static Path pdpPath = null;
     private static Long oldModified = null;
     private static HashMap<String, String> pdpMap = null;
-    private static final Logger LOGGER = FlexLogger.getLogger(CheckPDP.class);
+    private static final Logger LOGGER = FlexLogger.getLogger(CheckPdpProperties.class);
 
-    private CheckPDP() {
+    private CheckPdpProperties() {
         // default constructor
     }
 
@@ -77,7 +77,13 @@ public class CheckPDP {
         pdpMap = null;
     }
 
-    public static boolean validateID(String id) {
+    /**
+     * validateId - validates that the ID is in the properties.
+     *
+     * @param id Input ID
+     * @return true it is in the properties
+     */
+    public static boolean validateId(String id) {
         // ReadFile
         try {
             readFile();
@@ -107,7 +113,7 @@ public class CheckPDP {
             if (!pdpPath.toString().endsWith(".properties") || !pdpPath.toFile().exists()) {
                 LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "File doesn't exist in the specified Path : "
                         + pdpPath.toString());
-                CheckPDP.reset();
+                CheckPdpProperties.reset();
                 return;
             }
             readProps();
@@ -134,18 +140,18 @@ public class CheckPDP {
             List<String> sorted = new ArrayList(unsorted);
             Collections.sort(sorted);
             for (String propKey : sorted) {
-                loadPDPProperties(propKey, pdpProp);
+                loadPdpProperties(propKey, pdpProp);
             }
         } catch (IOException e) {
             LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
         }
         if (pdpMap == null || pdpMap.isEmpty()) {
             LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs");
-            CheckPDP.reset();
+            CheckPdpProperties.reset();
         }
     }
 
-    private static void loadPDPProperties(String propKey, Properties pdpProp) {
+    private static void loadPdpProperties(String propKey, Properties pdpProp) {
         if (propKey.startsWith("PDP_URL")) {
             String checkVal = pdpProp.getProperty(propKey);
             if (checkVal == null) {
@@ -156,14 +162,14 @@ public class CheckPDP {
                 int pdpCount = 0;
                 while (pdpCount < pdpDefault.size()) {
                     String pdpVal = pdpDefault.get(pdpCount);
-                    readPDPParam(pdpVal);
+                    readPdpParam(pdpVal);
                     pdpCount++;
                 }
             }
         }
     }
 
-    private static void readPDPParam(String pdpVal) {
+    private static void readPdpParam(String pdpVal) {
         if (pdpVal.contains(",")) {
             List<String> pdpValues = new ArrayList<>(Arrays.asList(pdpVal.split("\\s*,\\s*")));
             if (pdpValues.size() == 3) {
@@ -182,6 +188,13 @@ public class CheckPDP {
         }
     }
 
+    /**
+     * getEncoding reads in the PDP properties and returns an encoding
+     * for the given pdp.
+     * 
+     * @param pdpID Input PDP Id
+     * @return String encoding
+     */
     public static String getEncoding(String pdpID) {
         try {
             readFile();
index fc1a704..6db7a40 100644 (file)
@@ -49,6 +49,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.rest.XACMLRestProperties;
@@ -67,7 +68,7 @@ import org.onap.policy.xacml.std.pap.StdPDPStatus;
 
 /**
  * Implementation of the PAPEngine interface that communicates with a PAP engine in a remote servlet through a RESTful
- * interface
+ * interface.
  *
  *
  */
@@ -75,25 +76,29 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
     private static final Logger LOGGER = FlexLogger.getLogger(RESTfulPAPEngine.class);
 
     private static final String GROUP_ID = "groupId=";
+    private static final String UNABLE_MSG = "Unable to PUT policy '";
+    private static final String EXCEPTION_MSG = "', e:";
+    private static final String ERROR_MSG = "error";
+    private static final String PDPID_MSG = "pdpId=";
 
     //
     // URL of the PAP Servlet that this Admin Console talks to
     //
-    private String papServletURLString;
+    private String papServletUrlString;
 
     /**
-     * Set up link with PAP Servlet and get our initial set of Groups
+     * Set up link with PAP Servlet and get our initial set of Groups.
      *
      * @throws PAPException When failing to register with PAP
      */
-    public RESTfulPAPEngine(String myURLString) throws PAPException {
+    public RESTfulPAPEngine(String myUrlString) throws PAPException {
         //
         // Get our URL to the PAP servlet
         //
-        this.papServletURLString = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
-        if (this.papServletURLString == null || this.papServletURLString.length() == 0) {
-            String message =
-                    "The property 'POLICYENGINE_ADMIN_ACTIVE' was not set during installation.  Admin Console cannot call PAP.";
+        this.papServletUrlString = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
+        if (StringUtils.isBlank(this.papServletUrlString)) {
+            String message = "The property 'POLICYENGINE_ADMIN_ACTIVE' was not set during installation. "
+                    + "Admin Console cannot call PAP.";
             LOGGER.error(message);
             throw new PAPException(message);
         }
@@ -101,14 +106,14 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
         //
         // register this Admin Console with the PAP Servlet to get updates
         //
-        Object newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
-        if (newURL != null) {
+        Object newUrl = sendToPap("PUT", null, null, null, "adminConsoleURL=" + myUrlString);
+        if (newUrl != null) {
             // assume this was a re-direct and try again
-            LOGGER.warn("Redirecting to '" + newURL + "'");
-            this.papServletURLString = (String) newURL;
-            newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
-            if (newURL != null) {
-                LOGGER.error("Failed to redirect to " + this.papServletURLString);
+            LOGGER.warn("Redirecting to '" + newUrl + "'");
+            this.papServletUrlString = (String) newUrl;
+            newUrl = sendToPap("PUT", null, null, null, "adminConsoleURL=" + myUrlString);
+            if (newUrl != null) {
+                LOGGER.error("Failed to redirect to " + this.papServletUrlString);
                 throw new PAPException("Failed to register with PAP");
             }
         }
@@ -120,25 +125,25 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
 
     @Override
     public OnapPDPGroup getDefaultGroup() throws PAPException {
-        return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID, "default=");
+        return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID, "default=");
     }
 
     @Override
     public void setDefaultGroup(OnapPDPGroup group) throws PAPException {
-        sendToPAP("POST", null, null, null, GROUP_ID + group.getId(), "default=true");
+        sendToPap("POST", null, null, null, GROUP_ID + group.getId(), "default=true");
     }
 
     @SuppressWarnings("unchecked")
     @Override
     public Set<OnapPDPGroup> getOnapPDPGroups() throws PAPException {
         Set<OnapPDPGroup> newGroupSet;
-        newGroupSet = (Set<OnapPDPGroup>) this.sendToPAP("GET", null, Set.class, StdPDPGroup.class, GROUP_ID);
+        newGroupSet = (Set<OnapPDPGroup>) this.sendToPap("GET", null, Set.class, StdPDPGroup.class, GROUP_ID);
         return Collections.unmodifiableSet(newGroupSet);
     }
 
     @Override
     public OnapPDPGroup getGroup(String id) throws PAPException {
-        return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID + id);
+        return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID + id);
     }
 
     @Override
@@ -152,17 +157,10 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
             throw new PAPException("Unable to send name or description to PAP: " + e.getMessage() + e);
         }
 
-        this.sendToPAP("POST", null, null, null, GROUP_ID, "groupName=" + escapedName,
+        this.sendToPap("POST", null, null, null, GROUP_ID, "groupName=" + escapedName,
                 "groupDescription=" + escapedDescription);
     }
 
-    /**
-     * Update the configuration on the PAP for a single Group.
-     *
-     * @param group
-     * @return
-     * @throws PAPException
-     */
     @Override
     public void updateGroup(OnapPDPGroup group) throws PAPException {
         try {
@@ -178,9 +176,9 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
             // However, the policy files are (probably!) not too huge, and this is a good way to ensure that any
             // corrupted files on the PAP get refreshed.
             // now update the group object on the PAP
-            sendToPAP("PUT", group, null, null, GROUP_ID + group.getId());
+            sendToPap("PUT", group, null, null, GROUP_ID + group.getId());
         } catch (Exception e) {
-            String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
+            String message = UNABLE_MSG + group.getId() + EXCEPTION_MSG + e;
             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
             throw new PAPException(message);
         }
@@ -195,9 +193,9 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
     @Override
     public void updateGroup(OnapPDPGroup group, String userName) throws PAPException {
         try {
-            sendToPAP("PUT", group, null, null, GROUP_ID + group.getId(), "userId=" + userName);
+            sendToPap("PUT", group, null, null, GROUP_ID + group.getId(), "userId=" + userName);
         } catch (Exception e) {
-            String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
+            String message = UNABLE_MSG + group.getId() + EXCEPTION_MSG + e;
             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
             throw new PAPException(message);
         }
@@ -209,7 +207,7 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
         if (newGroup != null) {
             moveToGroupString = "movePDPsToGroupId=" + newGroup.getId();
         }
-        sendToPAP("DELETE", null, null, null, GROUP_ID + group.getId(), moveToGroupString);
+        sendToPap("DELETE", null, null, null, GROUP_ID + group.getId(), moveToGroupString);
     }
 
     @Override
@@ -218,46 +216,53 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
     }
 
     public OnapPDPGroup getPDPGroup(String pdpId) throws PAPException {
-        return (OnapPDPGroup) sendToPAP("GET", null, null, StdPDPGroup.class, GROUP_ID, "pdpId=" + pdpId,
+        return (OnapPDPGroup) sendToPap("GET", null, null, StdPDPGroup.class, GROUP_ID, PDPID_MSG + pdpId,
                 "getPDPGroup=");
     }
 
     @Override
     public OnapPDP getPDP(String pdpId) throws PAPException {
-        return (OnapPDP) sendToPAP("GET", null, null, StdPDP.class, GROUP_ID, "pdpId=" + pdpId);
+        return (OnapPDP) sendToPap("GET", null, null, StdPDP.class, GROUP_ID, PDPID_MSG + pdpId);
     }
 
     @Override
     public void newPDP(String id, OnapPDPGroup group, String name, String description, int jmxport)
             throws PAPException {
-        StdPDP newPDP = new StdPDP(id, name, description, jmxport);
-        sendToPAP("PUT", newPDP, null, null, GROUP_ID + group.getId(), "pdpId=" + id);
+        StdPDP newPdp = new StdPDP(id, name, description, jmxport);
+        sendToPap("PUT", newPdp, null, null, GROUP_ID + group.getId(), PDPID_MSG + id);
     }
 
     @Override
     public void movePDP(OnapPDP pdp, OnapPDPGroup newGroup) throws PAPException {
-        sendToPAP("POST", null, null, null, GROUP_ID + newGroup.getId(), "pdpId=" + pdp.getId());
+        sendToPap("POST", null, null, null, GROUP_ID + newGroup.getId(), PDPID_MSG + pdp.getId());
     }
 
     @Override
     public void updatePDP(OnapPDP pdp) throws PAPException {
         OnapPDPGroup group = getPDPGroup(pdp);
-        sendToPAP("PUT", pdp, null, null, GROUP_ID + group.getId(), "pdpId=" + pdp.getId());
+        sendToPap("PUT", pdp, null, null, GROUP_ID + group.getId(), PDPID_MSG + pdp.getId());
     }
 
     @Override
     public void removePDP(OnapPDP pdp) throws PAPException {
         OnapPDPGroup group = getPDPGroup(pdp);
-        sendToPAP("DELETE", null, null, null, GROUP_ID + group.getId(), "pdpId=" + pdp.getId());
+        sendToPap("DELETE", null, null, null, GROUP_ID + group.getId(), PDPID_MSG + pdp.getId());
     }
 
-    // Validate the Policy Data
+    /**
+     * validatePolicyRequest Creates a pap policy and then send to pap.
+     * 
+     * @param policyAdapter Input Adapter
+     * @param policyType Type of Policy
+     * @return true if validated
+     * @throws PAPException exception if invalid
+     */
     public boolean validatePolicyRequest(PolicyRestAdapter policyAdapter, String policyType) throws PAPException {
-        StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyAdapter.getPolicyName(), policyAdapter.getConfigBodyData(),
+        StdPAPPolicy newPapPolicy = new StdPAPPolicy(policyAdapter.getPolicyName(), policyAdapter.getConfigBodyData(),
                 policyAdapter.getConfigType(), "Base");
 
         // send JSON object to PAP
-        return (Boolean) sendToPAP("PUT", newPAPPolicy, null, null, "operation=validate", "apiflag=admin",
+        return (Boolean) sendToPap("PUT", newPapPolicy, null, null, "operation=validate", "apiflag=admin",
                 "policyType=" + policyType);
     }
 
@@ -279,18 +284,17 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
      * Copy a single Policy file from the input stream to the PAP Servlet. Either this works (silently) or it throws an
      * exception.
      *
-     * @param policyId
-     * @param group
-     * @param policy
-     * @return
-     * @throws PAPException
+     * @param policyId ID of policy
+     * @param group PDP Group
+     * @param policy Input stream of policy
+     * @throws PAPException exception
      */
     public void copyFile(String policyId, OnapPDPGroup group, InputStream policy) throws PAPException {
         // send the policy file to the PAP Servlet
         try {
-            sendToPAP("POST", policy, null, null, GROUP_ID + group.getId(), "policyId=" + policyId);
+            sendToPap("POST", policy, null, null, GROUP_ID + group.getId(), "policyId=" + policyId);
         } catch (Exception e) {
-            String message = "Unable to PUT policy '" + policyId + "', e:" + e;
+            String message = UNABLE_MSG + policyId + EXCEPTION_MSG + e;
             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
             throw new PAPException(message);
         }
@@ -304,7 +308,7 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
         try (InputStream is = new FileInputStream(new File(policy.getLocation()))) {
             copyFile(policy.getId(), group, is);
         } catch (Exception e) {
-            String message = "Unable to PUT policy '" + policy.getId() + "', e:" + e;
+            String message = UNABLE_MSG + policy.getId() + EXCEPTION_MSG + e;
             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
             throw new PAPException(message);
         }
@@ -319,13 +323,13 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
      * Special operation - Similar to the normal PAP operations but this one contacts the PDP directly to get detailed
      * status info.
      *
-     * @param pdp
-     * @return
-     * @throws PAPException
+     * @param pdp PDP to get status
+     * @return PDPStatus object
+     * @throws PAPException Exception
      */
     @Override
     public PDPStatus getStatus(OnapPDP pdp) throws PAPException {
-        return (StdPDPStatus) sendToPAP("GET", pdp, null, StdPDPStatus.class);
+        return (StdPDPStatus) sendToPap("GET", pdp, null, StdPDPStatus.class);
     }
 
     //
@@ -335,21 +339,22 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
     /**
      * Send a request to the PAP Servlet and get the response.
      *
-     * The content is either an InputStream to be copied to the Request OutputStream OR it is an object that is to be
+     * <p>The content is either an InputStream to be copied to the Request OutputStream OR it is an object that is to be
      * encoded into JSON and pushed into the Request OutputStream.
      *
-     * The Request parameters may be encoded in multiple "name=value" sets, or parameters may be combined by the caller.
+     * <p>The Request parameters may be encoded in multiple "name=value" sets, or parameters may be 
+     * combined by the caller.
      *
-     * @param method
+     * @param method method
      * @param content - EITHER an InputStream OR an Object to be encoded in JSON
-     * @param collectionTypeClass
-     * @param responseContentClass
-     * @param parameters
-     * @return
-     * @throws PAPException
+     * @param collectionTypeClass Collection
+     * @param responseContentClass Response Content
+     * @param parameters List of parameters
+     * @return Object
+     * @throws PAPException exception
      */
     @SuppressWarnings({"rawtypes", "unchecked"})
-    private Object sendToPAP(String method, Object content, Class collectionTypeClass, Class responseContentClass,
+    private Object sendToPap(String method, Object content, Class collectionTypeClass, Class responseContentClass,
             String... parameters) throws PAPException {
         HttpURLConnection connection = null;
         String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
@@ -362,28 +367,28 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
         Object contentObj = content;
         LOGGER.info("Encoding for the PAP is: " + encoding);
         try {
-            String fullURL = papServletURLString;
+            String fullUrl = papServletUrlString;
             if (parameters != null && parameters.length > 0) {
                 StringBuilder queryString = new StringBuilder();
                 Arrays.stream(parameters).map(p -> "&" + p).forEach(queryString::append);
-                fullURL += "?" + queryString.substring(1);
+                fullUrl += "?" + queryString.substring(1);
             }
 
             // special case - Status (actually the detailed status) comes from the PDP directly, not the PAP
             if ("GET".equals(method) && (contentObj instanceof OnapPDP) && responseContentClass == StdPDPStatus.class) {
                 // Adjust the url and properties appropriately
                 String pdpID = ((OnapPDP) contentObj).getId();
-                fullURL = pdpID + "?type=Status";
+                fullUrl = pdpID + "?type=Status";
                 contentObj = null;
-                if (CheckPDP.validateID(pdpID)) {
-                    encoding = CheckPDP.getEncoding(pdpID);
+                if (CheckPdpProperties.validateId(pdpID)) {
+                    encoding = CheckPdpProperties.getEncoding(pdpID);
                 }
             }
 
             //
             // Open up the connection
             //
-            connection = (HttpURLConnection) makeConnection(fullURL);
+            connection = (HttpURLConnection) makeConnection(fullUrl);
             //
             // Setup our method and headers
             //
@@ -433,9 +438,9 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
                     String finalPolicyPath = connection.getHeaderField("finalPolicyPath");
                     successMap.put("success", finalPolicyPath);
                     return successMap;
-                } else if ("error".equalsIgnoreCase(isSuccess)) {
+                } else if (ERROR_MSG.equalsIgnoreCase(isSuccess)) {
                     LOGGER.info("There was an error while creating the policy!");
-                    successMap.put("error", "error");
+                    successMap.put(ERROR_MSG, ERROR_MSG);
                     return successMap;
                 } else {
                     // get the response content into a String
@@ -456,19 +461,19 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
                 }
             } else if (connection.getResponseCode() >= 300 && connection.getResponseCode() <= 399) {
                 // redirection
-                String newURL = connection.getHeaderField("Location");
-                if (newURL == null) {
+                String newUrl = connection.getHeaderField("Location");
+                if (newUrl == null) {
                     LOGGER.error(
                             "No Location header to redirect to when response code=" + connection.getResponseCode());
                     throw new IOException(
                             "No redirect Location header when response code=" + connection.getResponseCode());
                 }
-                int qIndex = newURL.indexOf('?');
-                if (qIndex > 0) {
-                    newURL = newURL.substring(0, qIndex);
+                int qindex = newUrl.indexOf('?');
+                if (qindex > 0) {
+                    newUrl = newUrl.substring(0, qindex);
                 }
-                LOGGER.info("Redirect seen.  Redirecting " + fullURL + " to " + newURL);
-                return newURL;
+                LOGGER.info("Redirect seen.  Redirecting " + fullUrl + " to " + newUrl);
+                return newUrl;
             } else {
                 LOGGER.warn("Unexpected response code: " + connection.getResponseCode() + "  message: "
                         + connection.getResponseMessage());
@@ -529,7 +534,7 @@ public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAP
 
     // these may be overridden by junit tests
 
-    protected URLConnection makeConnection(String fullURL) throws IOException {
-        return new URL(fullURL).openConnection();
+    protected URLConnection makeConnection(String fullUrl) throws IOException {
+        return new URL(fullUrl).openConnection();
     }
 }
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java
deleted file mode 100644 (file)
index 358b69f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Engine
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.admin;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class CheckPDPTest {
-
-    @Test
-    public final void test1NoPropertySet() {
-        try {
-            System.clearProperty("xacml.rest.pdp.idfile");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            System.setProperty("xacml.rest.pdp.idfile",
-                    new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
-                            + "resources" + File.separator + "idonotexist.properties");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            System.setProperty("xacml.rest.pdp.idfile",
-                    new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
-                            + "resources" + File.separator + "doesnothaveproperties.atall");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
-                    + File.separator + "test" + File.separator + "resources" + File.separator + "testbad.properties");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
-                    + File.separator + "test" + File.separator + "resources" + File.separator + "empty.properties");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            System.setProperty("xacml.rest.pdp.idfile",
-                    new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
-                            + "resources" + File.separator + "testnotenoughvalues.properties");
-            assertFalse(CheckPDP.validateID("http://localhost:8082/pdp/"));
-
-            assertNull(CheckPDP.getPdpMap());
-            assertNull(CheckPDP.getEncoding("http://localhost:8082/pdp/"));
-
-        } catch (Exception e) {
-            fail("Error occured in CheckPDP test");
-        }
-    }
-
-    @Test
-    public final void test2CheckPDP() {
-        try {
-            System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
-                    + File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
-            assertTrue(CheckPDP.validateID("http://localhost:8082/pdp/"));
-            assertTrue(CheckPDP.getPdpMap().containsKey("http://localhost:8082/pdp/"));
-            assertTrue(CheckPDP.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
-        } catch (Exception e) {
-            fail("Error occured in CheckPDP test");
-        }
-    }
-}
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPdpPropertiesTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPdpPropertiesTest.java
new file mode 100644 (file)
index 0000000..afb6fc8
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.admin;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import com.att.research.xacml.util.XACMLProperties;
+import java.io.File;
+import java.io.IOException;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class CheckPdpPropertiesTest {
+
+    @Test
+    public final void test1NoPropertySet() throws IOException {
+        System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "noexistenfile.properties");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.clearProperty(XACMLProperties.XACML_PROPERTIES_NAME);
+        System.clearProperty("xacml.rest.pdp.idfile");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+                + File.separator + "test" + File.separator + "resources" + File.separator + "idonotexist.properties");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.setProperty("xacml.rest.pdp.idfile",
+                new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
+                        + "resources" + File.separator + "doesnothaveproperties.atall");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+                + File.separator + "test" + File.separator + "resources" + File.separator + "testbad.properties");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+                + File.separator + "test" + File.separator + "resources" + File.separator + "empty.properties");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        System.setProperty("xacml.rest.pdp.idfile",
+                new File(".").getCanonicalPath() + File.separator + "src" + File.separator + "test" + File.separator
+                        + "resources" + File.separator + "testnotenoughvalues.properties");
+        assertFalse(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+
+        assertNull(CheckPdpProperties.getPdpMap());
+        assertNull(CheckPdpProperties.getEncoding("http://localhost:8082/pdp/"));
+    }
+
+    @Test
+    public final void test2CheckPdp() throws IOException {
+        System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"
+                + File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
+        assertTrue(CheckPdpProperties.validateId("http://localhost:8082/pdp/"));
+        assertTrue(CheckPdpProperties.getPdpMap().containsKey("http://localhost:8082/pdp/"));
+        assertTrue(CheckPdpProperties.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
+    }
+}
index e28ca12..993c322 100644 (file)
@@ -22,8 +22,8 @@
 
 package org.onap.policy.admin;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.junit.Assert.assertNull;
 
 import com.att.research.xacml.api.pap.PAPException;
 import com.att.research.xacml.api.pap.PDPPolicy;
@@ -38,19 +38,14 @@ import java.net.URLConnection;
 import javax.servlet.http.HttpServletResponse;
 
 import org.junit.AfterClass;
-import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.mockito.Mockito;
 import org.onap.policy.rest.adapter.PolicyRestAdapter;
 import org.onap.policy.xacml.api.pap.OnapPDP;
 import org.onap.policy.xacml.api.pap.OnapPDPGroup;
 
 public class RESTfulPAPEngineTest {
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
 
     private RESTfulPAPEngine engine = null;
     private String name = "testName";
@@ -64,8 +59,18 @@ public class RESTfulPAPEngineTest {
     OnapPDP pdp = Mockito.mock(OnapPDP.class);
     InputStream policy;
 
+    /**
+     * BeforeClass does some simple code coverage and sets up the
+     * XACML properties.
+     */
     @BeforeClass
     public static void setUpBeforeClass() {
+        //
+        // Test constructor with bad URL
+        //
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            new RESTfulPAPEngine(null));
+
         XACMLProperties.reloadProperties();
     }
 
@@ -74,22 +79,22 @@ public class RESTfulPAPEngineTest {
         XACMLProperties.reloadProperties();
     }
 
-    @Before
-    public void runConstructor() throws Exception {
+    private void setupConnection(int responseCode) throws Exception {
         // Mock connection
         HttpURLConnection connection = Mockito.mock(HttpURLConnection.class);
-        Mockito.when(connection.getResponseCode()).thenReturn(HttpServletResponse.SC_NO_CONTENT);
+        Mockito.when(connection.getResponseCode()).thenReturn(responseCode);
+        Mockito.when(connection.getHeaderField("Location")).thenReturn("localhost:5678");
 
         // Set the system property temporarily
         String systemKey = "xacml.properties";
-        String oldProperty = System.getProperty(systemKey);
+        final String oldProperty = System.getProperty(systemKey);
         System.setProperty(systemKey, "src/test/resources/xacml.admin.properties");
 
         // Test constructor
         String urlName = "localhost:1234";
         engine = new RESTfulPAPEngine(urlName) {
             @Override
-            protected URLConnection makeConnection(String fullURL) throws IOException {
+            protected URLConnection makeConnection(String fullUrl) throws IOException {
                 return connection;
             }
         };
@@ -106,75 +111,68 @@ public class RESTfulPAPEngineTest {
     }
 
     @Test
-    public void testGroups() throws Exception {
+    public void testAllTheExceptions() throws Exception {
+        setupConnection(HttpServletResponse.SC_NO_CONTENT);
+
         engine.setDefaultGroup(group);
-        assertEquals(engine.getDefaultGroup(), null);
+        assertNull(engine.getDefaultGroup());
         engine.newGroup(name, description);
         engine.removeGroup(group, newGroup);
-        assertEquals(engine.getPDPGroup(pdp), null);
-        assertEquals(engine.getPDPGroup(id), null);
-        assertEquals(engine.getPDP(id), null);
-        assertEquals(engine.getStatus(pdp), null);
-
-        thrown.expect(NullPointerException.class);
-        engine.getOnapPDPGroups();
-        fail("Expecting an exception.");
-    }
+        assertNull(engine.getPDPGroup(pdp));
+        assertNull(engine.getPDPGroup(id));
+        assertNull(engine.getPDP(id));
+        assertNull(engine.getStatus(pdp));
 
-    @Test
-    public void testUpdateGroup() throws PAPException {
-        thrown.expect(PAPException.class);
-        engine.updateGroup(group);
-        fail("Expecting an exception.");
-    }
+        assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+            engine.getOnapPDPGroups()
+        );
 
-    @Test
-    public void testPDP() throws PAPException {
-        assertEquals(engine.getGroup(name), null);
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.updateGroup(group)
+        );
+
+        assertNull(engine.getGroup(name));
         engine.movePDP(pdp, newGroup);
 
-        thrown.expect(PAPException.class);
-        engine.newPDP(id, newGroup, name, description, jmxport);
-        fail("Expecting an exception.");
-    }
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.newPDP(id, newGroup, name, description, jmxport)
+        );
 
-    @Test
-    public void testUpdatePDP() throws PAPException {
-        thrown.expect(NullPointerException.class);
-        engine.updatePDP(pdp);
-        fail("Expecting an exception.");
-    }
+        assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+            engine.updatePDP(pdp)
+        );
 
-    @Test
-    public void testRemovePDP() throws PAPException {
-        thrown.expect(NullPointerException.class);
-        engine.removePDP(pdp);
-        fail("Expecting an exception.");
-    }
+        assertThatExceptionOfType(NullPointerException.class).isThrownBy(() ->
+            engine.removePDP(pdp)
+        );
 
-    @Test
-    public void testValidatePolicy() throws PAPException {
-        PolicyRestAdapter policyAdapter = new PolicyRestAdapter();
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.validatePolicyRequest(new PolicyRestAdapter(), policyType)
+        );
 
-        thrown.expect(PAPException.class);
-        engine.validatePolicyRequest(policyAdapter, policyType);
-        fail("Expecting an exception.");
-    }
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.publishPolicy(id, name, false, policy, newGroup)
+        );
 
-    @Test
-    public void testPublishPolicy() throws PAPException {
-        thrown.expect(PAPException.class);
-        engine.publishPolicy(id, name, false, policy, newGroup);
-        fail("Expecting an exception.");
-    }
-
-    @Test
-    public void testCopy() throws PAPException {
         engine.copyFile(id, newGroup, policy);
         PDPPolicy pdpPolicy = Mockito.mock(PDPPolicy.class);
-
-        thrown.expect(PAPException.class);
-        engine.copyPolicy(pdpPolicy, newGroup);
-        fail("Expecting an exception.");
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.copyPolicy(pdpPolicy, newGroup)
+        );
+
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.removePolicy(null, group)
+        );
+
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            engine.copyPolicy(null, null)
+        );
+
+        //
+        // Change the mockito to take a different path
+        //
+        assertThatExceptionOfType(PAPException.class).isThrownBy(() ->
+            setupConnection(HttpServletResponse.SC_FOUND)
+        );
     }
 }
diff --git a/pom.xml b/pom.xml
index 368e3cf..456e34e 100644 (file)
--- a/pom.xml
+++ b/pom.xml
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-mock</artifactId>

© 2017 ONAP. Copyright © The Linux Foundation ®. All Rights Reserved.
The Linux Foundation has registered trademarks and uses trademarks.
For a list of trademarks of The Linux Foundation, please see our Trademark Usage page.
Linux is a registered trademark of Linus Torvalds.
Privacy Policy and Terms of Use