From: pa834y Date: Thu, 28 Mar 2019 23:05:44 +0000 (-0400) Subject: Push and unpush to support multiple policies X-Git-Tag: 1.4.0~28^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=commitdiff_plain;h=c72526cde70d6b2899d9e4bbc40e096e0ecf1b7d Push and unpush to support multiple policies Change-Id: I95a05898d299a96810abf4f3b7940e8a3a243000 Issue-ID: POLICY-1414 Signed-off-by: pa834y --- diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java index 40cb8aaf9..5bea62dff 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/APIRequestHandler.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-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. @@ -17,14 +17,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pap.xacml.rest.handler; import java.io.IOException; -import java.sql.SQLException; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.onap.policy.common.logging.ONAPLoggingContext; import org.onap.policy.pap.xacml.rest.service.ImportService; import org.onap.policy.pap.xacml.rest.service.MetricService; @@ -34,6 +32,14 @@ public class APIRequestHandler { private OnapPDPGroup newGroup; + /** + * Do get. + * + * @param request the request + * @param response the response + * @param apiflag the apiflag + * @throws IOException Signals that an I/O exception has occurred. + */ public void doGet(HttpServletRequest request, HttpServletResponse response, String apiflag) throws IOException { // Request from the API to get Dictionary Items if ("api".equalsIgnoreCase(apiflag)) { @@ -58,9 +64,17 @@ public class APIRequestHandler { } } + /** + * Do put. + * + * @param request the request + * @param response the response + * @param service the service + * @throws IOException Signals that an I/O exception has occurred. + */ public void doPut(HttpServletRequest request, HttpServletResponse response, String service) throws IOException { - if ("MICROSERVICE".equalsIgnoreCase(service) || "BRMSPARAM".equalsIgnoreCase(service) || - "OPTIMIZATION".equalsIgnoreCase(service)) { + if ("MICROSERVICE".equalsIgnoreCase(service) || "BRMSPARAM".equalsIgnoreCase(service) + || "OPTIMIZATION".equalsIgnoreCase(service)) { ImportService importService = new ImportService(); importService.doImportMicroServicePut(request, response); return; @@ -74,13 +88,22 @@ public class APIRequestHandler { } } + /** + * Do delete. + * + * @param request the request + * @param response the response + * @param loggingContext the logging context + * @param apiflag the apiflag + * @throws IOException Signals that an I/O exception has occurred. + */ public void doDelete(HttpServletRequest request, HttpServletResponse response, ONAPLoggingContext loggingContext, - String apiflag) throws IOException, SQLException { + String apiflag) throws IOException { DeleteHandler deleteHandler = DeleteHandler.getInstance(); if ("deletePapApi".equalsIgnoreCase(apiflag)) { - deleteHandler.doAPIDeleteFromPAP(request, response); + deleteHandler.doApiDeleteFromPap(request, response); } else if ("deletePdpApi".equalsIgnoreCase(apiflag)) { - deleteHandler.doAPIDeleteFromPDP(request, response, loggingContext); + deleteHandler.doApiDeleteFromPdp(request, response, loggingContext); setNewGroup(deleteHandler.getDeletedGroup()); } } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java index ca0bb775a..4e7874260 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandler.java @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pap.xacml.rest.handler; import com.att.research.xacml.api.pap.PAPException; @@ -24,11 +25,12 @@ import com.att.research.xacml.api.pap.PDPPolicy; import com.att.research.xacml.util.XACMLProperties; import java.io.File; import java.io.IOException; -import java.sql.SQLException; +import java.util.Arrays; import java.util.List; import javax.script.SimpleBindings; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.StringUtils; import org.onap.policy.common.logging.ONAPLoggingContext; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; @@ -66,14 +68,26 @@ public class DeleteHandler { } private OnapPDPGroup newgroup; - private static Logger logger = FlexLogger.getLogger(DeleteHandler.class); - public static final String POLICY_IN_PDP = "PolicyInPDP"; - public static final String ERROR = "error"; - public static final String UNKNOWN = "unknown"; + private static final Logger LOGGER = FlexLogger.getLogger(DeleteHandler.class); + private static final String POLICY_IN_PDP = "PolicyInPDP"; + private static final String ERROR = "error"; + private static final String MESSAGE = "message"; + private static final String UNKNOWN = "unknown"; + private static final String SUCCESS = "success"; + private static final String OPERATION = "operation"; + private static final String CONFIG = "Config_"; private static final String REGEX = "[0-9a-zA-Z._]*"; + private static final String DELETE = "delete"; + private static final String ACTION = "Action_"; - public void doAPIDeleteFromPAP(HttpServletRequest request, HttpServletResponse response) - throws IOException, SQLException { + /** + * Do API delete from PAP. + * + * @param request the request + * @param response the response + * @throws IOException Signals that an I/O exception has occurred. + */ + public void doApiDeleteFromPap(HttpServletRequest request, HttpServletResponse response) throws IOException { // get the request content into a String String json = null; java.util.Scanner scanner = new java.util.Scanner(request.getInputStream()); @@ -85,7 +99,7 @@ public class DeleteHandler { StdPAPPolicy policy = PolicyUtils.jsonStringToObject(json, StdPAPPolicy.class); String policyName = policy.getPolicyName(); boolean policyVersionDeleted = false; - String removeXMLExtension; + String removeXmlExtension; int currentVersion; String removeVersionExtension; String splitPolicyName = null; @@ -97,16 +111,16 @@ public class DeleteHandler { try { jpaUtils = JPAUtils.getJPAUtilsInstance(); } catch (Exception e) { - PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "XACMLPapServlet", + PolicyLogger.error(MessageCodes.EXCEPTION_ERROR, e, "doAPIDeleteFromPAP", " Could not create JPAUtils instance on the PAP"); response.addHeader(ERROR, "jpautils"); - response.addHeader("operation", "delete"); + response.addHeader(OPERATION, DELETE); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } if (jpaUtils.dbLockdownIgnoreErrors()) { PolicyLogger.warn("Policies are locked down"); - response.addHeader("operation", "delete"); + response.addHeader(OPERATION, DELETE); response.addHeader("lockdown", "true"); response.setStatus(HttpServletResponse.SC_ACCEPTED); return; @@ -114,15 +128,15 @@ public class DeleteHandler { String policyEntityQuery = null; try { if (policyName.endsWith(".xml")) { - removeXMLExtension = policyName.replace(".xml", ""); + removeXmlExtension = policyName.replace(".xml", ""); currentVersion = - Integer.parseInt(removeXMLExtension.substring(removeXMLExtension.lastIndexOf('.') + 1)); - removeVersionExtension = removeXMLExtension.substring(0, removeXMLExtension.lastIndexOf('.')); + Integer.parseInt(removeXmlExtension.substring(removeXmlExtension.lastIndexOf('.') + 1)); + removeVersionExtension = removeXmlExtension.substring(0, removeXmlExtension.lastIndexOf('.')); boolean queryCheck = true; - if (policy.getDeleteCondition().equalsIgnoreCase("All Versions")) { - if (policyName.contains("Config_")) { + if ("All Versions".equalsIgnoreCase(policy.getDeleteCondition())) { + if (policyName.contains(CONFIG)) { splitPolicyName = removeVersionExtension.replace(".Config_", ":Config_"); - } else if (policyName.contains("Action_")) { + } else if (policyName.contains(ACTION)) { splitPolicyName = removeVersionExtension.replace(".Action_", ":Action_"); } else if (policyName.contains("Decision_")) { splitPolicyName = removeVersionExtension.replace(".Decision_", ":Decision_"); @@ -130,18 +144,18 @@ public class DeleteHandler { if (splitPolicyName != null) { split = splitPolicyName.split(":"); } else { - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + - "Failed to delete the policy. Please, provide the valid policyname."); + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + + "Failed to delete the policy. Please, provide the valid policyname."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } policyEntityQuery = "SELECT p FROM PolicyEntity p WHERE p.policyName LIKE :pName and p.scope=:pScope"; - } else if (policy.getDeleteCondition().equalsIgnoreCase("Current Version")) { - if (policyName.contains("Config_")) { + } else if ("Current Version".equalsIgnoreCase(policy.getDeleteCondition())) { + if (policyName.contains(CONFIG)) { splitPolicyName = policyName.replace(".Config_", ":Config_"); - } else if (policyName.contains("Action_")) { + } else if (policyName.contains(ACTION)) { splitPolicyName = policyName.replace(".Action_", ":Action_"); } else if (policyName.contains("Decision_")) { splitPolicyName = policyName.replace(".Decision_", ":Decision_"); @@ -164,9 +178,9 @@ public class DeleteHandler { SimpleBindings pvParams = new SimpleBindings(); pvParams.put("pname", removeVersionExtension.replace(".", File.separator)); List pvResult = commonClassDao.getDataByQuery(getPolicyVersion, pvParams); - PolicyVersion pVersion = (PolicyVersion) pvResult.get(0); + PolicyVersion polVersion = (PolicyVersion) pvResult.get(0); int newVersion = 0; - if (policy.getDeleteCondition().equalsIgnoreCase("All Versions")) { + if ("All Versions".equalsIgnoreCase(policy.getDeleteCondition())) { boolean groupCheck = checkPolicyGroupEntity(peResult); if (!groupCheck) { for (Object peData : peResult) { @@ -178,28 +192,28 @@ public class DeleteHandler { } switch (status) { case ERROR: - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + - "Exception Occured while deleting the Entity from Database."); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + + "Exception Occured while deleting the Entity from Database."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; case POLICY_IN_PDP: - PolicyLogger.error(MessageCodes.GENERAL_WARNING + - "Policy can't be deleted, it is active in PDP Groups."); + PolicyLogger.error(MessageCodes.GENERAL_WARNING + + "Policy can't be deleted, it is active in PDP Groups."); response.addHeader(ERROR, POLICY_IN_PDP); response.setStatus(HttpServletResponse.SC_CONFLICT); return; default: try { policyVersionDeleted = true; - commonClassDao.delete(pVersion); + commonClassDao.delete(polVersion); } catch (Exception e) { - logger.error(e.getMessage(), e); + LOGGER.error(e.getMessage(), e); policyVersionDeleted = false; } break; } - } else if (policy.getDeleteCondition().equalsIgnoreCase("Current Version")) { + } else if ("Current Version".equalsIgnoreCase(policy.getDeleteCondition())) { boolean groupCheck = checkPolicyGroupEntity(peResult); if (!groupCheck) { policyEntity = (PolicyEntity) peResult.get(0); @@ -209,14 +223,14 @@ public class DeleteHandler { } if (ERROR.equals(status)) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + - "Exception Occured while deleting the Entity from Database."); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + + "Exception Occured while deleting the Entity from Database."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } else if (POLICY_IN_PDP.equals(status)) { - PolicyLogger.error(MessageCodes.GENERAL_WARNING + - "Policy can't be deleted, it is active in PDP Groups."); + PolicyLogger.error(MessageCodes.GENERAL_WARNING + + "Policy can't be deleted, it is active in PDP Groups."); response.addHeader(ERROR, POLICY_IN_PDP); response.setStatus(HttpServletResponse.SC_CONFLICT); return; @@ -233,30 +247,30 @@ public class DeleteHandler { } } } - pVersion.setActiveVersion(newVersion); - pVersion.setHigherVersion(newVersion); + polVersion.setActiveVersion(newVersion); + polVersion.setHigherVersion(newVersion); try { policyVersionDeleted = true; - commonClassDao.save(pVersion); + commonClassDao.save(polVersion); } catch (Exception e) { - logger.error(e.getMessage(), e); + LOGGER.error(e.getMessage(), e); policyVersionDeleted = false; } } else { try { policyVersionDeleted = true; - commonClassDao.delete(pVersion); + commonClassDao.delete(polVersion); } catch (Exception e) { - logger.error(e.getMessage(), e); + LOGGER.error(e.getMessage(), e); policyVersionDeleted = false; } } } } } else { - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + - "Failed to delete the policy for an unknown reason. Check the file system and other logs" + - " for further information."); + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + + "Failed to delete the policy for an unknown reason. Check the file system and other logs" + + " for further information."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; @@ -271,25 +285,31 @@ public class DeleteHandler { if (policyVersionDeleted) { response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("operation", "delete"); + response.addHeader("successMapKey", SUCCESS); + response.addHeader(OPERATION, DELETE); } else { - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + - "Failed to delete the policy for an unknown reason. Check the file system and other logs for " + - "further information."); + PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + + "Failed to delete the policy for an unknown reason. Check the file system and other logs for " + + "further information."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } + /** + * Delete policy entity data. + * + * @param policyEntity the policy entity + * @return the string + */ public static String deletePolicyEntityData(PolicyEntity policyEntity) { PolicyElasticSearchController controller = new PolicyElasticSearchController(); PolicyRestAdapter policyData = new PolicyRestAdapter(); String policyName = policyEntity.getPolicyName(); try { - if (policyName.contains("Config_") || policyName.contains("Decision_MS_")) { + if (policyName.contains("CONFIG") || policyName.contains("Decision_MS_")) { commonClassDao.delete(policyEntity.getConfigurationData()); - } else if (policyName.contains("Action_")) { + } else if (policyName.contains(ACTION)) { commonClassDao.delete(policyEntity.getActionBodyEntity()); } String searchPolicyName = policyEntity.getScope() + "." + policyEntity.getPolicyName(); @@ -297,12 +317,18 @@ public class DeleteHandler { controller.deleteElk(policyData); commonClassDao.delete(policyEntity); } catch (Exception e) { - logger.error(e.getMessage(), e); + LOGGER.error(e.getMessage(), e); return ERROR; } - return "success"; + return SUCCESS; } + /** + * Check policy group entity. + * + * @param peResult the pe result + * @return true, if successful + */ public static boolean checkPolicyGroupEntity(List peResult) { String groupEntityquery = "from PolicyGroupEntity where policyid = :policyEntityId"; for (Object peData : peResult) { @@ -317,107 +343,112 @@ public class DeleteHandler { return false; } - public void doAPIDeleteFromPDP(HttpServletRequest request, HttpServletResponse response, - ONAPLoggingContext loggingContext) throws IOException { - - String policyName = request.getParameter("policyName"); + /** + * Do API delete from PDP. + * + * @param request the request + * @param response the response + * @param loggingContext the logging context + * @throws IOException Signals that an I/O exception has occurred. + */ + public void doApiDeleteFromPdp(HttpServletRequest request, HttpServletResponse response, + ONAPLoggingContext loggingContext) throws IOException { String groupId = request.getParameter("groupId"); - String responseString = null; if (groupId != null && !groupId.matches(REGEX)) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - response.addHeader("error", ERROR); - response.addHeader("message", "Group Id is not valid"); + response.addHeader(ERROR, ERROR); + response.addHeader(MESSAGE, "Group Id is not valid"); return; } + String requestId = request.getHeader("X-ECOMP-RequestID"); + String polName = request.getParameter("policyName"); + LOGGER.info("JSON request from API to Delete Policy from the PDP - " + polName + " -RequestId - " + requestId); - PolicyLogger.info("JSON request from API to Delete Policy from the PDP: " + policyName); - - // for PUT operations the group may or may not need to exist before the operation can be done + // for PUT operations the group may or may not need to exist before the operation can be + // done OnapPDPGroup group = null; try { group = XACMLPapServlet.getPAPEngine().getGroup(groupId); } catch (PAPException e) { - PolicyLogger.error("Exception occured While PUT operation is performing for PDP Group" + e); + LOGGER.error("Exception occured While PUT operation is performing for PDP Group" + " - RequestId - " + + requestId + e); } if (group == null) { String message = "Unknown groupId '" + groupId + "'."; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " " + message); + LOGGER.error(MessageCodes.ERROR_DATA_ISSUE + " - RequestId - " + requestId + " - " + message); loggingContext.transactionEnded(); PolicyLogger.audit("Transaction Failed - See Error.log"); response.addHeader(ERROR, "UnknownGroup"); - response.addHeader("message", message); + response.addHeader(MESSAGE, message); response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; - } else { - loggingContext.setServiceName("API:PAP.deletPolicyFromPDPGroup"); - if (policyName.contains("xml")) { - PolicyLogger - .debug("The full file name including the extension was provided for policyName.. continue."); - } else { + } + loggingContext.setServiceName("API:PAP.deletPolicyFromPDPGroup"); + RemoveGroupPolicy removePolicy = new RemoveGroupPolicy((StdPDPGroup) group); + removePolicy.prepareToRemove(); + List policyIdList = Arrays.asList(polName.split(",")); + for (String policyName : policyIdList) { + if (!policyName.endsWith("xml")) { String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid policyName... " + "policyName must be the full name of the file to be deleted including version and extension"; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Invalid policyName... " - + "policyName must be the full name of the file to be deleted including version and extension"); + LOGGER.error(message + " - RequestId - " + requestId); response.addHeader(ERROR, message); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; } - RemoveGroupPolicy removePolicy = new RemoveGroupPolicy((StdPDPGroup) group); PDPPolicy policy = group.getPolicy(policyName); - if (policy != null) { - - if ((policy.getId().contains("Config_MS_")) || (policy.getId().contains("BRMS_Param"))) { - if (preSafetyCheck(policy)) { - PolicyLogger.debug("Precheck Successful."); - } - } - PolicyLogger.info("Preparing to remove policy from group: " + group.getId()); - removePolicy.prepareToRemove(policy); - OnapPDPGroup updatedGroup = removePolicy.getUpdatedObject(); - responseString = deletePolicyFromPDPGroup(updatedGroup, loggingContext); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy does not exist on the PDP."; - PolicyLogger.error(message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Policy does not exist on the PDP."); + if (policy == null) { + String message = + XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy does not exist on the PDP - " + policyName; + LOGGER.error(message + " - RequestId - " + requestId); response.addHeader(ERROR, message); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; } + if (StringUtils.indexOfAny(policy.getId(), "Config_MS_", "BRMS_Param") >= 0) { + preSafetyCheck(policy); + } + LOGGER.info("Preparing to remove policy from group: " + group.getId() + "- RequestId - " + requestId); + removePolicy.removePolicy(policy); } + OnapPDPGroup updatedGroup = removePolicy.getUpdatedObject(); + String userId = request.getParameter("userId"); + String responseString = deletePolicyFromPdpGroup(updatedGroup, loggingContext, userId); + switch (responseString) { - case "success": + case SUCCESS: loggingContext.transactionEnded(); - PolicyLogger.info("Policy successfully deleted!"); + LOGGER.info("Policy successfully removed from PDP - " + polName + " - RequestId - " + requestId); PolicyLogger.audit("Policy successfully deleted!"); response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("successMapKey", "success"); - response.addHeader("operation", "delete"); + response.addHeader("successMapKey", SUCCESS); + response.addHeader(OPERATION, DELETE); break; case "No Group": String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Group update had bad input."; - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input."); + LOGGER.error(message + " - RequestId - " + requestId); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.addHeader(ERROR, "groupUpdate"); - response.addHeader("message", message); + response.addHeader(MESSAGE, message); break; case "DB Error": - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database"); + LOGGER.error(MessageCodes.ERROR_PROCESS_FLOW + " Error while updating group in the database" + + " - RequestId - " + requestId); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.addHeader(ERROR, "deleteDB"); break; default: - PolicyLogger.error(MessageCodes.ERROR_UNKNOWN + - " Failed to delete the policy for an unknown reason. Check the file system and other logs " + - "for " + - "further information."); + LOGGER.error(MessageCodes.ERROR_UNKNOWN + + " Failed to delete the policy for an unknown reason. Check the file system and other logs " + + "for " + "further information."); response.addHeader(ERROR, UNKNOWN); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); break; } } - private String deletePolicyFromPDPGroup(OnapPDPGroup group, ONAPLoggingContext loggingContext) { + private String deletePolicyFromPdpGroup(OnapPDPGroup group, ONAPLoggingContext loggingContext, String userId) { PolicyDBDaoTransaction acPutTransaction = XACMLPapServlet.getDbDaoTransaction(); String response = null; loggingContext.setServiceName("API:PAP.DeleteHandler"); @@ -427,14 +458,14 @@ public class DeleteHandler { } catch (PAPException e1) { PolicyLogger.error("Exception occured While Deleting Policy From PDP Group" + e1); } - if (!(group instanceof StdPDPGroup) || existingGroup == null || - !(group.getId().equals(existingGroup.getId()))) { - String existingID = null; + if (!(group instanceof StdPDPGroup) || existingGroup == null + || !(group.getId().equals(existingGroup.getId()))) { + String existingId = null; if (existingGroup != null) { - existingID = existingGroup.getId(); + existingId = existingGroup.getId(); } - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingID + - " objectFromJSON=" + group); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE + " Group update had bad input. id=" + existingId + + " objectFromJSON=" + group); loggingContext.transactionEnded(); PolicyLogger.audit("Transaction Failed - See Error.log"); response = "No Group"; @@ -445,11 +476,10 @@ public class DeleteHandler { // so we need to fill that in before submitting the group for update ((StdPDPGroup) group).setDirectory(((StdPDPGroup) existingGroup).getDirectory()); try { - acPutTransaction.updateGroup(group, "XACMLPapServlet.doDelete", null); + acPutTransaction.updateGroup(group, "XACMLPapServlet.doDelete", userId); } catch (Exception e) { PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "XACMLPapServlet", - " Error while updating group in the database: " - + "group=" + existingGroup.getId()); + " Error while updating group in the database: " + "group=" + existingGroup.getId()); response = "DB Error"; return response; } @@ -469,7 +499,7 @@ public class DeleteHandler { response = "error in groupChanged method"; } if (response == null) { - response = "success"; + response = SUCCESS; loggingContext.transactionEnded(); PolicyLogger.audit("Policy successfully deleted!"); } @@ -486,13 +516,18 @@ public class DeleteHandler { return true; } + /** + * Gets the single instance of DeleteHandler. + * + * @return single instance of DeleteHandler + */ public static DeleteHandler getInstance() { try { - Class deleteHandler = Class.forName( - XACMLProperties.getProperty("deletePolicy.impl.className", DeleteHandler.class.getName())); + Class deleteHandler = Class + .forName(XACMLProperties.getProperty("deletePolicy.impl.className", DeleteHandler.class.getName())); return (DeleteHandler) deleteHandler.newInstance(); } catch (Exception e) { - logger.error(e.getMessage(), e); + LOGGER.error(e.getMessage(), e); } return null; } diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java index 2d98b820d..42c815aa8 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicy.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-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. @@ -20,46 +20,53 @@ package org.onap.policy.pap.xacml.rest.model; +import com.att.research.xacml.api.pap.PDPPolicy; import java.util.Collection; import java.util.HashSet; import java.util.Set; - import org.onap.policy.rest.util.PDPPolicyContainer; import org.onap.policy.xacml.api.pap.OnapPDPGroup; import org.onap.policy.xacml.std.pap.StdPDPGroup; -import com.att.research.xacml.api.pap.PDPPolicy; - public class RemoveGroupPolicy { - - //Container from where we are fetching the policies + // Container from where we are fetching the policies private static PDPPolicyContainer policyContainer; - private RemoveGroupPolicy self = this; private StdPDPGroup updatedObject; private final StdPDPGroup group; private boolean isSaved = false; + /** + * Instantiates a new removes the group policy. + * + * @param group the group + */ public RemoveGroupPolicy(StdPDPGroup group) { this.group = group; } - public void prepareToRemove(PDPPolicy policy) { - + /** + * Prepare to remove. + */ + public void prepareToRemove() { if (this.group == null) { return; } setRemoveGroupPolicy(new PDPPolicyContainer(group)); + } + /** + * Removes the policy. + * + * @param policy the policy + */ + public void removePolicy(PDPPolicy policy) { RemoveGroupPolicy.policyContainer.removeItem(policy); - - self.doSave(); - - self.isSaved = true; - + this.doSave(); + this.isSaved = true; } private static void setRemoveGroupPolicy(PDPPolicyContainer pdpPolicyContainer) { @@ -72,14 +79,11 @@ public class RemoveGroupPolicy { return; } - StdPDPGroup updatedGroupObject = new StdPDPGroup( - group.getId(), - group.isDefaultGroup(), - group.getName(), - group.getDescription(), - null); + StdPDPGroup updatedGroupObject = + new StdPDPGroup(group.getId(), group.isDefaultGroup(), group.getName(), group.getDescription(), null); - // replace the original set of Policies with the set from the container (possibly modified by the user) + // replace the original set of Policies with the set from the container (possibly modified + // by the user) Set changedPolicies = new HashSet<>(); changedPolicies.addAll((Collection) RemoveGroupPolicy.policyContainer.getItemIds()); updatedGroupObject.setPolicies(changedPolicies); @@ -102,4 +106,13 @@ public class RemoveGroupPolicy { return this.updatedObject; } + /** + * Gets the group. + * + * @return the group + */ + public StdPDPGroup getGroup() { + return group; + } + } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java index e7ab36e7a..73540033f 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/handler/DeleteHandlerTest.java @@ -96,7 +96,7 @@ public class DeleteHandlerTest { // Test deletion from PAP MockHttpServletResponse response = new MockHttpServletResponse(); try { - handler.doAPIDeleteFromPAP(request, response); + handler.doApiDeleteFromPap(request, response); } catch (Exception ex) { fail("Not expecting an exception: " + ex); } @@ -104,7 +104,7 @@ public class DeleteHandlerTest { // Test deletion from PDP ONAPLoggingContext loggingContext = Mockito.mock(ONAPLoggingContext.class); try { - handler.doAPIDeleteFromPDP(request, response, loggingContext); + handler.doApiDeleteFromPdp(request, response, loggingContext); } catch (Exception ex) { fail("Not expecting an exception: " + ex); diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java index 162f4a928..cd6bf021d 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/model/RemoveGroupPolicyTest.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-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. @@ -21,10 +21,10 @@ package org.onap.policy.pap.xacml.rest.model; import static org.junit.Assert.assertEquals; +import com.att.research.xacml.api.pap.PDPPolicy; import org.junit.Test; import org.onap.policy.xacml.std.pap.StdPDPGroup; import org.onap.policy.xacml.std.pap.StdPDPPolicy; -import com.att.research.xacml.api.pap.PDPPolicy; public class RemoveGroupPolicyTest { @Test @@ -37,8 +37,8 @@ public class RemoveGroupPolicyTest { // Test remove PDPPolicy policy = new StdPDPPolicy(); - remove.prepareToRemove(policy); - remove.doSave(); + remove.prepareToRemove(); + remove.removePolicy(policy); assertEquals(remove.isRemoved(), true); } } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java index 52e3bcc1b..ff0ac826f 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DeletePolicyService.java @@ -2,15 +2,15 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * Modifications Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * 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. @@ -18,13 +18,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.policy.pdp.rest.api.services; -import java.io.File; -import java.util.UUID; +package org.onap.policy.pdp.rest.api.services; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; import org.onap.policy.api.DeletePolicyParameters; import org.onap.policy.api.PolicyException; +import org.onap.policy.api.PolicyNameType; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.xacml.api.XACMLErrorConstants; @@ -32,68 +36,70 @@ import org.onap.policy.xacml.std.pap.StdPAPPolicy; import org.onap.policy.xacml.std.pap.StdPAPPolicyParams; import org.springframework.http.HttpStatus; -public class DeletePolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(DeletePolicyService.class.getName()); - private String deleteResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; +/** + * The Class DeletePolicyService. + */ +public class DeletePolicyService extends PdpApiService { + + private static final Logger LOGGER = FlexLogger.getLogger(DeletePolicyService.class.getName()); + private static final String PRINT_REQUESTID = " - RequestId - "; private DeletePolicyParameters deletePolicyParameters = null; - private String message = null; - private String filePrefix = null; - private String clientScope = null; - private String policyType = null; - private String policyName = null; - private String policyScope = null; + private String result = null; + private List policyList = new ArrayList<>(); - public DeletePolicyService(final DeletePolicyParameters deletePolicyParameters, final String requestID) { + + /** + * Instantiates a new delete policy service. + * + * @param deletePolicyParameters the delete policy parameters + * @param reqId the request id + */ + public DeletePolicyService(final DeletePolicyParameters deletePolicyParameters, final String reqId) { + super(); this.deletePolicyParameters = deletePolicyParameters; - if (deletePolicyParameters.getRequestID() == null) { - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (final IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - } else { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.deletePolicyParameters.setRequestID(requestUUID); - } + deletePolicyParameters.setRequestID(populateRequestId(deletePolicyParameters.getRequestID(), reqId)); try { run(); specialCheck(); } catch (final PolicyException e) { - LOGGER.error("Unable to process delete policy request for : " + this.deletePolicyParameters); - deleteResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; + LOGGER.error("Unable to process delete policy request for : " + this.deletePolicyParameters + + PRINT_REQUESTID + this.requestId); + result = XACMLErrorConstants.ERROR_DATA_ISSUE + e; status = HttpStatus.BAD_REQUEST; } } + /** + * Special check. + */ private void specialCheck() { - if (deleteResult == null) { + if (result == null) { return; } - if (deleteResult.contains("BAD REQUEST") || deleteResult.contains("PE300") || deleteResult.contains("PE200") - || deleteResult.contains("not exist") || deleteResult.contains("Invalid policyName")) { - if (deleteResult.contains("groupId")) { + if (result.contains("BAD REQUEST") || result.contains("PE300") || result.contains("PE200") + || result.contains("not exist") || result.contains("Invalid policyName")) { + if (result.contains("groupId")) { status = HttpStatus.NOT_FOUND; } else { status = HttpStatus.BAD_REQUEST; } - } else if (deleteResult.contains("locked down")) { + } else if (result.contains("locked down")) { status = HttpStatus.ACCEPTED; - } else if (deleteResult.contains("not Authorized")) { + } else if (result.contains("not Authorized")) { status = HttpStatus.FORBIDDEN; - } else if (deleteResult.contains("JPAUtils") || deleteResult.contains("database") - || deleteResult.contains("policy file") || deleteResult.contains("unknown") - || deleteResult.contains("configuration")) { + } else if (result.contains("JPAUtils") || result.contains("database") + || result.contains("policy file") || result.contains("unknown") + || result.contains("configuration")) { status = HttpStatus.INTERNAL_SERVER_ERROR; } } + /** + * Run. + * + * @throws PolicyException the policy exception + */ private void run() throws PolicyException { // Check Validation. if (!getValidation()) { @@ -102,9 +108,10 @@ public class DeletePolicyService { } // Get Result. try { - LOGGER.debug("Processing delete request: " + deletePolicyParameters.toString()); + LOGGER.debug("Processing delete request: " + deletePolicyParameters.toString() + PRINT_REQUESTID + + this.requestId); status = HttpStatus.OK; - deleteResult = processResult(); + result = processResult(); } catch (final Exception e) { LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); status = HttpStatus.BAD_REQUEST; @@ -112,175 +119,161 @@ public class DeletePolicyService { } } + /** + * Process result. + * + * @return the string + * @throws PolicyException the policy exception + */ private String processResult() throws PolicyException { String response = null; - String fullPolicyName = null; String pdpGroup = deletePolicyParameters.getPdpGroup(); - // PDP Group Check. - if (pdpGroup == null) { - pdpGroup = "NA"; - } - final PAPServices papServices = new PAPServices(); - if (!deletePolicyParameters.getPolicyName().contains("xml")) { - - final String activeVersion = papServices.getActiveVersion(policyScope, filePrefix, policyName, clientScope, - deletePolicyParameters.getRequestID()); - LOGGER.debug("The active version of " + policyScope + File.separator + filePrefix + policyName + " is " - + activeVersion); - String id = null; - if ("pe100".equalsIgnoreCase(activeVersion)) { - response = XACMLErrorConstants.ERROR_PERMISSIONS - + "response code of the URL is 403. PEP is not Authorized for making this Request!! " - + "Contact Administrator for this Scope. "; - LOGGER.error(response); - return response; - } else if ("pe300".equalsIgnoreCase(activeVersion)) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " - + "This indicates a problem with getting the version from the PAP or the policy does not exist."; - LOGGER.error(response); - return response; - } - if (!"0".equalsIgnoreCase(activeVersion)) { - id = policyScope + "." + filePrefix + policyName + "." + activeVersion + ".xml"; - LOGGER.debug("The policyId is " + id); - } else { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "could not retrieve the activeVersion for this policy. could not retrieve the activeVersion for this policy. " - + "This indicates the policy does not exist, please verify the policy exists."; - LOGGER.error(response); - return response; - } - - fullPolicyName = policyScope + "." + filePrefix + policyName + "." + activeVersion + ".xml"; - } else { - fullPolicyName = policyName; + final PAPServices papServices = new PAPServices(); + if (!populateFullPolicyName(papServices)) { + LOGGER.error(message); + return message; } if ("PAP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent())) { - if (deletePolicyParameters.getDeleteCondition() == null - || deletePolicyParameters.getDeleteCondition().toString().trim().isEmpty()) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Delete Condition given."; - LOGGER.error(message); - return message; - } // for deleting policies from the API - final StdPAPPolicy deletePapPolicy = - new StdPAPPolicy(StdPAPPolicyParams.builder() - .policyName(fullPolicyName) - .deleteCondition(deletePolicyParameters.getDeleteCondition().toString()) - .build()); - // send JSON object to PAP - response = (String) papServices.callPAP(deletePapPolicy, - new String[] {"groupId=" + pdpGroup, "apiflag=deletePapApi", "operation=delete"}, - deletePolicyParameters.getRequestID(), clientScope); - } else if ("PDP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent())) { - if (deletePolicyParameters.getPdpGroup() == null || deletePolicyParameters.getPdpGroup().trim().isEmpty()) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PDP Group given."; - LOGGER.error(message); - return message; + for (PolicyNameType policyData : policyList) { + // validation ensures there will be one delete policy at a time + final StdPAPPolicy deletePapPolicy = + new StdPAPPolicy(StdPAPPolicyParams.builder().policyName(policyData.getFullPolicyName()) + .deleteCondition(deletePolicyParameters.getDeleteCondition().toString()).build()); + // send JSON object to PAP + response = (String) papServices.callPAP(deletePapPolicy, + new String[] {"groupId=" + pdpGroup, "apiflag=deletePapApi", "operation=delete"}, + deletePolicyParameters.getRequestID(), policyData.getClientScope()); } + } else if ("PDP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent())) { + String policies = + policyList.stream().map(PolicyNameType::getFullPolicyName).collect(Collectors.joining(",")); // send JSON object to PAP response = - (String) papServices.callPAP( - null, new String[] {"policyName=" + fullPolicyName, "groupId=" + pdpGroup, - "apiflag=deletePdpApi", "operation=delete"}, + (String) papServices.callPAP(null, + new String[] {"policyName=" + policies, "groupId=" + pdpGroup, "apiflag=deletePdpApi", + "operation=delete", "userId=API"}, deletePolicyParameters.getRequestID(), clientScope); } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Policy Component does not exist. Please enter either PAP or PDP to delete the policy from a specified Policy Component."; - LOGGER.error(message); + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy Component does not exist." + + "Please enter either PAP or PDP to delete the policy from a specified Policy Component."; + LOGGER.warn(message + PRINT_REQUESTID + requestId); response = message; } return response; } + /** + * Populate full policy name. + * + * @param papServices the pap services + * @return true, if successful + */ + private boolean populateFullPolicyName(final PAPServices papServices) { + for (PolicyNameType policyData : policyList) { + if (policyData.getPolicyName().contains("xml")) { + policyData.setFullPolicyName(policyData.getPolicyName()); + continue; + } + + final String activeVersion = papServices.getActiveVersion(policyData.getPolicyScope(), + policyData.getFilePrefix(), policyData.getPolicyName(), policyData.getClientScope(), + deletePolicyParameters.getRequestID()); + + if ("pe100".equalsIgnoreCase(activeVersion)) { + message = XACMLErrorConstants.ERROR_PERMISSIONS + + "response code of the URL is 403. PEP is not Authorized for making this Request!! " + + "Contact Administrator for this Scope. "; + LOGGER.warn(message + PRINT_REQUESTID + this.requestId); + return false; + } else if ("pe300".equalsIgnoreCase(activeVersion)) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " + + "This indicates a problem with getting the version" + + "from the PAP or the policy does not exist."; + LOGGER.warn(message + PRINT_REQUESTID + this.requestId); + return false; + } + if ("0".equalsIgnoreCase(activeVersion)) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "could not retrieve the activeVersion for this policy." + + "This indicates the policy does not exist, please verify the policy exists."; + LOGGER.warn(message + PRINT_REQUESTID + this.requestId); + return false; + } + + policyData.setFullPolicyName(policyData.getPolicyScope() + "." + policyData.getFilePrefix() + + policyData.getPolicyName() + "." + activeVersion + ".xml"); + } + return true; + } + + /** + * Gets the validation. + * + * @return the validation + */ private boolean getValidation() { - // While Validating, extract the required values. - if (deletePolicyParameters.getPolicyName() == null || deletePolicyParameters.getPolicyName().trim().isEmpty()) { + if (StringUtils.isBlank(deletePolicyParameters.getPolicyName())) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; return false; } - if (!deletePolicyParameters.getPolicyName().contains("xml")) { - if (deletePolicyParameters.getPolicyName() != null - && deletePolicyParameters.getPolicyName().contains(".")) { - policyName = deletePolicyParameters.getPolicyName().substring( - deletePolicyParameters.getPolicyName().lastIndexOf('.') + 1, - deletePolicyParameters.getPolicyName().length()); - policyScope = deletePolicyParameters.getPolicyName().substring(0, - deletePolicyParameters.getPolicyName().lastIndexOf('.')); - LOGGER.info("Name is " + policyName + " scope is " + policyScope); - } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - return false; - } - } else { - policyName = deletePolicyParameters.getPolicyName(); - } - policyType = deletePolicyParameters.getPolicyType(); - if (policyType == null || policyType.trim().isEmpty()) { + + String policyType = deletePolicyParameters.getPolicyType(); + if (StringUtils.isBlank(policyType)) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PolicyType given."; return false; } - setClientScope(); - if (clientScope == null || clientScope.trim().isEmpty()) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + deletePolicyParameters.getPolicyType() - + " is not a valid Policy Type."; - LOGGER.error(message); + + if (StringUtils.isBlank(deletePolicyParameters.getPolicyComponent())) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Component given."; return false; } - LOGGER.debug("clientScope is " + clientScope); - LOGGER.debug("filePrefix is " + filePrefix); - if (deletePolicyParameters.getPolicyComponent() == null) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Component given."; + + List policyNames = Arrays.asList(deletePolicyParameters.getPolicyName().split(",")); + List policyTypes = Arrays.asList(deletePolicyParameters.getPolicyType().split(",")); + + if (policyTypes.size() > 1 && (policyNames.size() != policyTypes.size())) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid number of PolicyTypes"; return false; } - return true; - } - private void setClientScope() { - if ("Firewall".equalsIgnoreCase(policyType)) { - clientScope = "ConfigFirewall"; - filePrefix = "Config_FW_"; - } else if ("Action".equalsIgnoreCase(policyType)) { - clientScope = "Action"; - filePrefix = "Action_"; - } else if ("Decision".equalsIgnoreCase(policyType)) { - clientScope = "Decision"; - filePrefix = "Decision_"; - } else if ("Base".equalsIgnoreCase(policyType)) { - clientScope = "Config"; - filePrefix = "Config_"; - } else if ("ClosedLoop_Fault".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_Fault_"; - } else if ("ClosedLoop_PM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_PM_"; - } else if ("MicroService".equalsIgnoreCase(policyType)) { - clientScope = "ConfigMS"; - filePrefix = "Config_MS_"; - } else if ("Optimization".equalsIgnoreCase(policyType)) { - clientScope = "ConfigOptimization"; - filePrefix = "Config_OOF_"; - } else if ("BRMS_RAW".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsRaw"; - filePrefix = "Config_BRMS_Raw_"; - } else if ("BRMS_PARAM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsParam"; - filePrefix = "Config_BRMS_Param_"; - } else { - clientScope = null; - message = XACMLErrorConstants.ERROR_DATA_ISSUE + policyType + " is not a valid Policy Type."; + if ((policyNames.stream().anyMatch(StringUtils::isBlank)) + || (policyTypes.stream().anyMatch(StringUtils::isBlank))) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid PolicyName or PolicyType"; + return false; } - } - public String getResult() { - return deleteResult; - } + if ("PAP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent()) && policyNames.size() > 1) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Only one policy can be deleted from PAP at a time"; + return false; + } + + if ("PAP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent()) + && (deletePolicyParameters.getDeleteCondition() == null + || deletePolicyParameters.getDeleteCondition().toString().trim().isEmpty())) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Delete Condition given."; + LOGGER.warn(message + PRINT_REQUESTID + requestId); + return false; + } + + if ("PDP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent()) + && StringUtils.isBlank(deletePolicyParameters.getPdpGroup())) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PDP Group given."; + LOGGER.warn(message + PRINT_REQUESTID + requestId); + return false; + } + + if (!validatePolicyNameAndScope(policyNames, policyTypes, policyList)) { + LOGGER.warn(XACMLErrorConstants.ERROR_DATA_ISSUE + "Failed validation in validatePolicyNameAndScope - " + + message + PRINT_REQUESTID + requestId); + return false; + } - public HttpStatus getResponseCode() { - return status; + return true; } + public String getResult() { + return result; + } } diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java new file mode 100644 index 000000000..4d38753bf --- /dev/null +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PdpApiService.java @@ -0,0 +1,162 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-PDP-REST + * ================================================================================ + * 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.pdp.rest.api.services; + +import java.util.List; +import java.util.UUID; +import org.apache.commons.lang3.StringUtils; +import org.onap.policy.api.PolicyNameType; +import org.onap.policy.common.logging.flexlogger.FlexLogger; +import org.onap.policy.common.logging.flexlogger.Logger; +import org.onap.policy.xacml.api.XACMLErrorConstants; +import org.springframework.http.HttpStatus; + +public abstract class PdpApiService { + private static final Logger LOGGER = FlexLogger.getLogger(PdpApiService.class.getName()); + protected String requestId = null; + protected String filePrefix = null; + protected String clientScope = null; + protected String message = null; + protected HttpStatus status = HttpStatus.BAD_REQUEST; + + protected UUID populateRequestId(UUID paramReqId, String reqId) { + UUID requestUuid = paramReqId; + if (paramReqId == null) { + if (!StringUtils.isBlank(reqId)) { + try { + requestUuid = UUID.fromString(reqId); + } catch (IllegalArgumentException e) { + requestUuid = UUID.randomUUID(); + LOGGER.info("Generated Random UUID: " + requestUuid.toString(), e); + } + } else { + requestUuid = UUID.randomUUID(); + LOGGER.info("Generated Random UUID: " + requestUuid.toString()); + } + } + this.requestId = requestUuid.toString(); + return requestUuid; + } + + /** + * Sets the client scope. + */ + protected void setClientScope(String policyType) { + if ("Firewall".equalsIgnoreCase(policyType)) { + clientScope = "ConfigFirewall"; + filePrefix = "Config_FW_"; + } else if ("Action".equalsIgnoreCase(policyType)) { + clientScope = "Action"; + filePrefix = "Action_"; + } else if ("Decision".equalsIgnoreCase(policyType)) { + clientScope = "Decision"; + filePrefix = "Decision_"; + } else if ("Base".equalsIgnoreCase(policyType)) { + clientScope = "Config"; + filePrefix = "Config_"; + } else if ("ClosedLoop_Fault".equalsIgnoreCase(policyType)) { + clientScope = "ConfigClosedLoop"; + filePrefix = "Config_Fault_"; + } else if ("ClosedLoop_PM".equalsIgnoreCase(policyType)) { + clientScope = "ConfigClosedLoop"; + filePrefix = "Config_PM_"; + } else if ("MicroService".equalsIgnoreCase(policyType)) { + clientScope = "ConfigMS"; + filePrefix = "Config_MS_"; + } else if ("Optimization".equalsIgnoreCase(policyType)) { + clientScope = "ConfigOptimization"; + filePrefix = "Config_OOF_"; + } else if ("BRMS_RAW".equalsIgnoreCase(policyType)) { + clientScope = "ConfigBrmsRaw"; + filePrefix = "Config_BRMS_Raw_"; + } else if ("BRMS_PARAM".equalsIgnoreCase(policyType)) { + clientScope = "ConfigBrmsParam"; + filePrefix = "Config_BRMS_Param_"; + } else { + extendedClientScope(policyType); + } + } + + protected void extendedClientScope(String policyType) { + clientScope = null; + message = XACMLErrorConstants.ERROR_DATA_ISSUE + policyType + " is not a valid Policy Type."; + } + + protected boolean validatePolicyNameAndScope(List policyNames, List policyTypes, + List policyList) { + String policyName = null; + String policyScope = null; + String polType = null; + + if (policyTypes.size() == 1) { + polType = policyTypes.get(0).trim(); + } + + try { + for (int i = 0; i < policyNames.size(); i++) { + String polName = policyNames.get(i); + if (policyTypes.size() > 1) { + polType = policyTypes.get(i).trim(); + } + if (polName.contains(".")) { + policyName = polName.substring(polName.lastIndexOf('.') + 1); + policyScope = polName.substring(0, polName.lastIndexOf('.')); + } else { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; + return false; + } + if (StringUtils.isBlank(policyName) || StringUtils.isBlank(policyScope)) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Policy Name."; + return false; + } + + clientScope = null; + filePrefix = null; + setClientScope(polType); + if (StringUtils.isBlank(clientScope) || StringUtils.isBlank(filePrefix)) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Policy Name."; + return false; + } + PolicyNameType policyData = new PolicyNameType(policyName.trim(), policyScope.trim(), polType, + filePrefix, clientScope, null); + policyList.add(policyData); + LOGGER.info("RequestId - " + requestId + " , Policy - " + policyData); + + } + } catch (Exception e) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + + "validatePolicies - Failed Validation. Please check the input parameters."; + return false; + } + return true; + } + + + /** + * Gets the response code. + * + * @return the response code + */ + public HttpStatus getResponseCode() { + return status; + } + +} diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PushPolicyService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PushPolicyService.java index 7ab17e0d0..870496129 100644 --- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PushPolicyService.java +++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PushPolicyService.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * ONAP-PDP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-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. @@ -17,11 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.policy.pdp.rest.api.services; -import java.util.UUID; +package org.onap.policy.pdp.rest.api.services; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.onap.policy.api.PolicyException; +import org.onap.policy.api.PolicyNameType; import org.onap.policy.api.PushPolicyParameters; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; @@ -29,175 +33,142 @@ import org.onap.policy.xacml.api.XACMLErrorConstants; import org.onap.policy.xacml.std.pap.StdPDPPolicy; import org.springframework.http.HttpStatus; -import com.att.research.xacml.api.pap.PAPException; - -public class PushPolicyService { +public class PushPolicyService extends PdpApiService { private static final Logger LOGGER = FlexLogger.getLogger(PushPolicyService.class.getName()); - - private String pushResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; + private PushPolicyParameters pushPolicyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; + private List policyList = new ArrayList<>(); private String pdpGroup = null; - private String policyType = null; - private String filePrefix = null; - private String clientScope = null; + private String result = null; - public PushPolicyService(PushPolicyParameters pushPolicyParameters, - String requestID) { + /** + * Instantiates a new push policy service. + * + * @param pushPolicyParameters the push policy parameters + * @param reqId the request ID + */ + public PushPolicyService(final PushPolicyParameters pushPolicyParameters, final String reqId) { this.pushPolicyParameters = pushPolicyParameters; - if(pushPolicyParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.pushPolicyParameters.setRequestID(requestUUID); - } - try{ + pushPolicyParameters.setRequestID(populateRequestId(pushPolicyParameters.getRequestID(), reqId)); + LOGGER.info("Operation: pushPolicy - Request - " + pushPolicyParameters + ", RequestId - " + requestId); + try { run(); specialCheck(); - }catch(PolicyException e){ - pushResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; + } catch (PolicyException e) { + result = XACMLErrorConstants.ERROR_DATA_ISSUE + e; status = HttpStatus.BAD_REQUEST; } + LOGGER.info( + "PushPolicyService - RequestId - " + requestId + " , Response - " + result + ", Status - " + status); } - private void specialCheck() { - if(pushResult.contains("BAD REQUEST") || pushResult.contains("PE300")){ - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ + private void run() throws PolicyException { + // Check Validation. + if (!getValidation()) { LOGGER.error(message); throw new PolicyException(message); } - // Process Results. - try{ + // Process Results. + try { status = HttpStatus.OK; - pushResult = processResult(); - }catch(Exception e){ + result = processResult(); + } catch (Exception e) { LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); status = HttpStatus.BAD_REQUEST; throw new PolicyException(e); } } - private String processResult() throws PolicyException{ + private String processResult() throws PolicyException { PAPServices papServices = new PAPServices(); String response = null; - StdPDPPolicy selectedPolicy = papServices.pushPolicy(policyScope, filePrefix, policyName, clientScope, pdpGroup, pushPolicyParameters.getRequestID()); - if(selectedPolicy==null){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " - + "This indicates a problem with getting the version from the PAP or the policy does not exist."; - LOGGER.error(response); - return response; - } + try { - LOGGER.debug("StdPDPPolicy object contains: " + selectedPolicy.getId() + ", " + selectedPolicy.getName() + ", " + selectedPolicy.getLocation().toString()); - response = (String) papServices.callPAP(selectedPolicy, new String[]{"groupId=" + pdpGroup, "policyId="+selectedPolicy.getId(), "apiflag=api", "operation=POST"}, pushPolicyParameters.getRequestID(), clientScope); - } catch (PAPException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+e.getMessage()); + // for each policy to be pushed, we need to call pap to get the active version + // and construct the full policy name. Then the list of policy names are sent to pap + // to do the actual push. + String policyId = constructPolicyNames(papServices); + response = + (String) papServices + .callPAP(null, + new String[] {"groupId=" + pdpGroup, "policyId=" + policyId, "apiflag=api", + "operation=POST", "userId=API"}, + pushPolicyParameters.getRequestID(), clientScope); + } catch (Exception e) { + LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e.getMessage()); throw new PolicyException(e); } LOGGER.debug("Final API response: " + response); return response; } + private void specialCheck() { + if (result.contains("BAD REQUEST") || result.contains("PE300")) { + status = HttpStatus.BAD_REQUEST; + } + } + + + private String constructPolicyNames(PAPServices papServices) throws PolicyException { + List pushPolicyList = new ArrayList<>(policyList.size()); + for (PolicyNameType policyData : policyList) { + LOGGER.info("PushPolicyService - constructPolicyNames - Policy Name is " + policyData.getPolicyName() + + " scope is " + policyData.getPolicyScope()); + // for each policy we need to get the active version to construct policyId + StdPDPPolicy selectedPolicy = papServices.pushPolicy(policyData.getPolicyScope(), + policyData.getFilePrefix(), policyData.getPolicyName(), policyData.getClientScope(), + pdpGroup.trim(), pushPolicyParameters.getRequestID()); + if (selectedPolicy != null) { + pushPolicyList.add(selectedPolicy.getId()); + } else { + throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " + + "This indicates a problem with getting the version " + + "from the PAP or the policy does not exist - " + policyData); + } + } + return String.join(",", pushPolicyList); + } + private boolean getValidation() { // While Validating, extract the required values. - if (pushPolicyParameters.getPolicyName() != null - && pushPolicyParameters.getPolicyName().contains(".")) { - policyName = pushPolicyParameters.getPolicyName().substring(pushPolicyParameters.getPolicyName().lastIndexOf('.') + 1, - pushPolicyParameters.getPolicyName().length()); - policyScope = pushPolicyParameters.getPolicyName().substring(0,pushPolicyParameters.getPolicyName().lastIndexOf('.')); - LOGGER.info("Name is " + policyName + " scope is " + policyScope); - } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - return false; - } - if (policyName==null||policyName.trim().isEmpty()){ + if (StringUtils.isBlank(pushPolicyParameters.getPolicyName())) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; return false; } - policyType = pushPolicyParameters.getPolicyType(); - if(policyType== null || policyType.trim().isEmpty()){ + + if (StringUtils.isBlank(pushPolicyParameters.getPolicyType())) { message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PolicyType given."; return false; } - setClientScope(); - if(clientScope==null){ + List policyNames = Arrays.asList(pushPolicyParameters.getPolicyName().split(",")); + List policyTypes = Arrays.asList(pushPolicyParameters.getPolicyType().split(",")); + + if (policyTypes.size() != 1 && (policyNames.size() != policyTypes.size())) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid number of PolicyTypes"; return false; } - - pdpGroup = pushPolicyParameters.getPdpGroup(); - if(pdpGroup==null || pdpGroup.trim().isEmpty()){ - pdpGroup = "default"; + + if ((policyNames.stream().anyMatch(StringUtils::isBlank)) + || (policyTypes.stream().anyMatch(StringUtils::isBlank))) { + message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid PolicyName or PolicyType"; + return false; } - - LOGGER.debug("clientScope is " + clientScope); - LOGGER.debug("filePrefix is " + filePrefix); - return true; - } + if (!validatePolicyNameAndScope(policyNames, policyTypes, policyList)) { + LOGGER.warn("PushPolicyService - Failed validation in validatePolicyNameAndScope - " + message); + return false; + } - private void setClientScope() { - if ("Firewall".equalsIgnoreCase(policyType)) { - clientScope = "ConfigFirewall"; - filePrefix = "Config_FW_"; - } else if ("Action".equalsIgnoreCase(policyType)) { - clientScope = "Action"; - filePrefix = "Action_"; - } else if ("Decision".equalsIgnoreCase(policyType)) { - clientScope = "Decision"; - filePrefix = "Decision_"; - } else if ("Base".equalsIgnoreCase(policyType)) { - clientScope = "Config"; - filePrefix = "Config_"; - } else if ("ClosedLoop_Fault".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_Fault_"; - } else if ("ClosedLoop_PM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_PM_"; - } else if ("MicroService".equalsIgnoreCase(policyType)) { - clientScope = "ConfigMS"; - filePrefix = "Config_MS_"; - } else if ("Optimization".equalsIgnoreCase(policyType)) { - clientScope = "ConfigOptimization"; - filePrefix = "Config_OOF_"; - } else if ("BRMS_RAW".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsRaw"; - filePrefix = "Config_BRMS_Raw_"; - } else if ("BRMS_PARAM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsParam"; - filePrefix = "Config_BRMS_Param_"; - } else { - clientScope = null; - message = XACMLErrorConstants.ERROR_DATA_ISSUE + policyType - + " is not a valid Policy Type."; + pdpGroup = pushPolicyParameters.getPdpGroup(); + if (StringUtils.isBlank(pdpGroup)) { + pdpGroup = "default"; } - } - public String getResult() { - return pushResult; + return true; } - public HttpStatus getResponseCode() { - return status; + public String getResult() { + return result; } - } diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java index e7c01b110..f08ef038c 100644 --- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java +++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/api/test/PolicyEngineServicesTest.java @@ -19,6 +19,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pdp.rest.api.test; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; @@ -89,8 +90,7 @@ public class PolicyEngineServicesTest { headers = new HttpHeaders(); headers.add(CLIENTAUTHHEADER, CLIENTAUTHVALUE); XACMLProperties.reloadProperties(); - System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, - "src/test/resources/pass.xacml.pdp.properties"); + System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/pass.xacml.pdp.properties"); XACMLProperties.getProperties(); this.mockMvc = webAppContextSetup(webApplicationContext).build(); } @@ -99,8 +99,9 @@ public class PolicyEngineServicesTest { public void getConfigAPIFailureTest() throws Exception { ConfigRequestParameters pep = new ConfigRequestParameters(); pep.setPolicyName(".*"); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400)); + mockMvc.perform( + post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().is(400)); // Authorization tests. mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) @@ -114,48 +115,46 @@ public class PolicyEngineServicesTest { // Set wrong request. pep.setPolicyName(null); pep.setConfigName("test"); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, "123").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()); + mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .header(UUIDHEADER, "123").contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest()); } @Test public void getConfigServiceTest() throws Exception { ConfigRequestParameters pep = new ConfigRequestParameters(); pep.setPolicyName(".*"); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, UUID.randomUUID()) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); + mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); // Without policyName and using onapName and other fields. pep.setPolicyName(null); pep.setOnapName("test"); pep.setConfigName("test"); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); // with config attributes. Map configAttributes = new HashMap<>(); configAttributes.put("test", "test"); pep.setConfigAttributes(configAttributes); pep.makeUnique(true); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); + mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); } @Test public void getConfigByPolicyNameTest() throws Exception { ConfigNameRequest pep = new ConfigNameRequest(); pep.setPolicyName(".*"); - mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400)); + mockMvc.perform( + post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().is(400)); // Authorization tests. mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/getConfigByPolicyName").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, UUID.randomUUID()) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); + mockMvc.perform(post("/getConfigByPolicyName").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); } @Test @@ -168,30 +167,25 @@ public class PolicyEngineServicesTest { mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "")) .andExpect(status().isUnauthorized()); - mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, UUID.randomUUID()) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); + mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); } @Test public void listPolicyTest() throws Exception { ConfigNameRequest pep = new ConfigNameRequest(); pep.setPolicyName(".*"); - mockMvc.perform(post("/listPolicy").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, UUID.randomUUID()) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()); - pep.setPolicyName("*"); - mockMvc.perform(post("/listPolicy").content(PolicyUtils.objectToJsonString(pep)) - .headers(headers).header(UUIDHEADER, UUID.randomUUID()) - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is4xxClientError()); + mockMvc.perform(post("/listPolicy").content(PolicyUtils.objectToJsonString(pep)).headers(headers) + .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); } @Test public void getMetricsTest() throws Exception { // Failure Tests. mockMvc.perform(get("/getMetrics")).andExpect(status().isBadRequest()); - mockMvc.perform(get("/getMetrics").header(CLIENTAUTHHEADER, "Basic 123")) - .andExpect(status().isUnauthorized()); + mockMvc.perform(get("/getMetrics").header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, "123")) .andExpect(status().isBadRequest()); @@ -204,30 +198,24 @@ public class PolicyEngineServicesTest { public void getNotificationAuthFailureTest() throws Exception { mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "").content("test")) .andExpect(status().isUnauthorized()); - mockMvc.perform( - post("/getNotification").header(CLIENTAUTHHEADER, "Basic test123").content("test")) + mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "Basic test123").content("test")) .andExpect(status().isUnauthorized()); - mockMvc.perform( - post("/getNotification").header(CLIENTAUTHHEADER, ERRORCLIENTVALUE).content(" ")) + mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, ERRORCLIENTVALUE).content(" ")) .andExpect(status().isUnauthorized()); } @Test public void getNotificationTopicFailureTest() throws Exception { mockMvc.perform(post("/getNotification")).andExpect(status().isBadRequest()); - mockMvc.perform(post("/getNotification").headers(headers).content("")) - .andExpect(status().isBadRequest()); + mockMvc.perform(post("/getNotification").headers(headers).content("")).andExpect(status().isBadRequest()); } @Test public void getNotificationTopicValidFailTest() throws Exception { // Check failures. - mockMvc.perform(post("/getNotification").headers(headers).content(" ")) - .andExpect(status().isBadRequest()); - mockMvc.perform(post("/stopNotification").headers(headers).content(" ")) - .andExpect(status().isBadRequest()); - mockMvc.perform(post("/sendHeartbeat").headers(headers).content(" ")) - .andExpect(status().isBadRequest()); + mockMvc.perform(post("/getNotification").headers(headers).content(" ")).andExpect(status().isBadRequest()); + mockMvc.perform(post("/stopNotification").headers(headers).content(" ")).andExpect(status().isBadRequest()); + mockMvc.perform(post("/sendHeartbeat").headers(headers).content(" ")).andExpect(status().isBadRequest()); } @Test @@ -239,22 +227,17 @@ public class PolicyEngineServicesTest { XACMLProperties.getProperties(); NotificationService.reloadProps(); // Add a Topic. - mockMvc.perform( - post("/getNotification").headers(headers).header(UUIDHEADER, "123").content("test")) + mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, "123").content("test")) .andExpect(status().isOk()); // Try to add same topic should fail. - mockMvc.perform(post("/getNotification").headers(headers) - .header(UUIDHEADER, UUID.randomUUID()).content("test")) + mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, UUID.randomUUID()).content("test")) .andExpect(status().isBadRequest()); // do a heart beat. - mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")) - .andExpect(status().isOk()); + mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isOk()); // remove the added Topic. - mockMvc.perform(post("/stopNotification").headers(headers).content("test")) - .andExpect(status().isOk()); + mockMvc.perform(post("/stopNotification").headers(headers).content("test")).andExpect(status().isOk()); // try to remove again should fail. - mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")) - .andExpect(status().isBadRequest()); + mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isBadRequest()); } @Test @@ -274,17 +257,15 @@ public class PolicyEngineServicesTest { .andExpect(status().isOk()); pep.setEventAttributes(null); mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setEventAttributes(eventAttributes); mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isOk()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk()); pep.setEventAttributes(eventAttributes); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isOk()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk()); } @Test @@ -306,17 +287,15 @@ public class PolicyEngineServicesTest { pep.setDecisionAttributes(null); pep.setOnapName(null); mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setOnapName("testing"); mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setDecisionAttributes(eventAttributes); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isOk()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk()); } @Test @@ -329,61 +308,67 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyName("com."); + mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setPolicyName("com.test"); + pep.setPolicyType(""); + mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName("scopeless"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName("testing.test"); pep.setPolicyType("wrong"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_PARAM"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_RAW"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("MicroService"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_PM"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_Fault"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Base"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Decision"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Action"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("Firewall"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setPolicyType("Optimization"); + mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPdpGroup("default"); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123")) .andExpect(status().isBadRequest()); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setPolicyType("Base,Base"); + pep.setPolicyName("com.test1,com.test2"); + mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setPolicyType("Base,Base, "); + pep.setPolicyName("com.test1,com.test2,com.test3"); + mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -396,93 +381,135 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyName("testing"); + pep.setPolicyType("Base"); + pep.setPolicyComponent("PDP"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "test123")).andExpect(status().isBadRequest()); - pep.setPolicyName("testscope.name"); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + .andExpect(status().isBadRequest()); + pep.setPdpGroup("default"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + .andExpect(status().isBadRequest()); + pep.setPolicyName("com.Config_test.1.xml"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) + .andExpect(status().isBadRequest()); + pep.setPolicyName("testing. "); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123")) .andExpect(status().isBadRequest()); pep.setPolicyName("testscope.name"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("wrong"); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_PARAM"); pep.setPolicyComponent("wrong"); pep.setRequestID(null); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setPolicyType("BRMS_PARAM"); + pep.setPolicyComponent("PDP"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyType("BRMS_RAW"); pep.setPolicyComponent("PDP"); + pep.setPolicyName("testscope.name"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("MicroService"); - pep.setPolicyComponent("PAP"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyType("Optimization"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_PM"); pep.setPolicyComponent("PDP"); pep.setDeleteCondition(DeletePolicyCondition.ALL); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("ClosedLoop_Fault"); pep.setDeleteCondition(DeletePolicyCondition.ONE); + pep.setPolicyName("test.test"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("Base"); pep.setPolicyComponent("PAP"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("Decision"); pep.setPolicyComponent("PDP"); - pep.setPolicyName("test.xml"); + pep.setPolicyName("test.test"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyType("Action"); - pep.setPolicyName("scope.Config_test.xml"); + pep.setPolicyName("scope.test"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPdpGroup("default"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyComponent("PAP"); pep.setPolicyType("Firewall"); pep.setDeleteCondition(null); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyComponent("PAP"); pep.setDeleteCondition(DeletePolicyCondition.ONE); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyComponent("fail"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyComponent("PDP"); pep.setPolicyName("testscope.policyName"); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyComponent(null); mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyComponent("PDP"); + pep.setPolicyName("com.test1,com.test2"); + pep.setPolicyType("Base,Base"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyName("com.test1,com.test2"); + pep.setPolicyType("Base,Base, "); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyName("com.test1,com.test2, "); + pep.setPolicyType("Base,Base, "); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); + pep.setPolicyComponent("PAP"); + pep.setPolicyName("com.test1,com.test2"); + pep.setPolicyType("Base,Base"); + mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); } @Test @@ -499,40 +526,38 @@ public class PolicyEngineServicesTest { // Service Tests. setCreateUpdateImpl(); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyName("failName"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "test 123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test 123")) + .andExpect(status().isBadRequest()); pep.setPolicyName("test. name"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setPolicyName(" "); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyName("test. "); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyName("te st.name"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyName("test.name"); pep.setPolicyDescription("testá"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setPolicyName("test.name"); pep.setPolicyDescription("good"); pep.setTtlDate(new Date()); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -546,12 +571,10 @@ public class PolicyEngineServicesTest { // Checks for BRMS Param Policy. pep.setPolicyConfigType(PolicyConfigType.BRMS_PARAM); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map> attributes = new HashMap<>(); Map matching = new HashMap<>(); matching.put("key", "value"); @@ -559,38 +582,30 @@ public class PolicyEngineServicesTest { pep.setAttributes(attributes); pep.setRiskLevel("5"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); // Checks for BRMS Raw Policy pep.setPolicyConfigType(PolicyConfigType.BRMS_RAW); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel(null); - pep.setConfigBody( - "package droolsexample\n\n import com.sample.ItemCity;\nimport java.math.BigDecimal;\n" - + "rule \"Nagpur Medicine Item\"\n\n when\n" - + " item : ItemCity(purchaseCity == ItemCity.City.NAGPUR,\n" - + " typeofItem == ItemCity.Type.MEDICINES)\n then\n" - + " BigDecimal tax = new BigDecimal(0.0);\n" - + " item.setLocalTax(tax.multiply(item.getSellPrice()));\nend"); - mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + pep.setConfigBody("package droolsexample\n\n import com.sample.ItemCity;\nimport java.math.BigDecimal;\n" + + "rule \"Nagpur Medicine Item\"\n\n when\n" + + " item : ItemCity(purchaseCity == ItemCity.City.NAGPUR,\n" + + " typeofItem == ItemCity.Type.MEDICINES)\n then\n" + + " BigDecimal tax = new BigDecimal(0.0);\n" + + " item.setLocalTax(tax.multiply(item.getSellPrice()));\nend"); + mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("5"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -604,39 +619,31 @@ public class PolicyEngineServicesTest { // Checks for Base config Policy. pep.setPolicyConfigType(PolicyConfigType.Base); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testbody"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBodyType(PolicyType.OTHER); pep.setRiskLevel("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("ec nam-e"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("onapName"); pep.setConfigName("tes config"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigName("configName"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{'test':'test}"); pep.setConfigBodyType(PolicyType.JSON); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map> attributes = new HashMap<>(); Map matching = new HashMap<>(); matching.put("key", "value"); @@ -644,8 +651,7 @@ public class PolicyEngineServicesTest { pep.setAttributes(attributes); pep.setConfigBody("testBody"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -659,39 +665,30 @@ public class PolicyEngineServicesTest { // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_Fault); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te stá"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testBody"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"key\":\"value\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -705,46 +702,35 @@ public class PolicyEngineServicesTest { // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_PM); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te stá"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("testBody"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"key\":\"value\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"onapname\":\"test\", \"serviceTypePolicyName\":\"value\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -758,32 +744,25 @@ public class PolicyEngineServicesTest { // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.Firewall); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te st"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"test\":\"test\"}"); pep.setRiskLevel("test"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"configName\":\"test\"}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -797,36 +776,28 @@ public class PolicyEngineServicesTest { // Checks for Closed loop Policy. pep.setPolicyConfigType(PolicyConfigType.MicroService); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("te st"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{}"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setConfigBody("{\"test\":\"test\"}"); pep.setOnapName(" "); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("testonap"); pep.setRiskLevel("fail"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRiskLevel("4"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); - pep.setConfigBody( - "{\"service\":\"test\",\"uuid\":\"test\",\"location\":\"test\",\"configName\":\"test\"," - + "\"description\":\"test\",\"priority\":\"test\",\"version\":\"test\"}"); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); + pep.setConfigBody("{\"service\":\"test\",\"uuid\":\"test\",\"location\":\"test\",\"configName\":\"test\"," + + "\"description\":\"test\",\"priority\":\"test\",\"version\":\"test\"}"); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -840,63 +811,50 @@ public class PolicyEngineServicesTest { // Checks for action Policy. pep.setPolicyClass(PolicyClass.Action); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map> attributes = new HashMap<>(); pep.setAttributes(attributes); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.put(AttributeType.MATCHING, new HashMap<>()); pep.setAttributes(attributes); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); Map matching = new HashMap<>(); matching.put("key", "value"); attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionAttribute("A1"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionPerformer("PEX"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setActionPerformer("PEP"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); // Checks for Decision Policy. pep.setPolicyClass(PolicyClass.Decision); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setOnapName("xyz"); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.remove(AttributeType.MATCHING); attributes.put(AttributeType.SETTINGS, matching); pep.setAttributes(attributes); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); attributes.put(AttributeType.MATCHING, matching); pep.setAttributes(attributes); mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -912,32 +870,29 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setDictionaryType(DictionaryType.MicroService); mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setDictionary("test dict"); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setDictionaryJson("{\"test\":\"value\"}"); mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID())) + .andExpect(status().isBadRequest()); pep.setDictionaryJson("test123"); mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123")) .andExpect(status().isBadRequest()); pep.setDictionary("MicroServiceDictionary"); mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -950,21 +905,18 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setDictionaryType(DictionaryType.Common); mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, UUID.randomUUID().toString())) - .andExpect(status().isBadRequest()); + .header(UUIDHEADER, UUID.randomUUID().toString())).andExpect(status().isBadRequest()); pep.setDictionary("OnapName"); mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); pep.setRequestID(UUID.randomUUID()); mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers)) - .andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest()); } @Test @@ -986,24 +938,24 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setPolicyScope("test"); mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setPolicyName("name"); mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setConfigType("OTHER"); mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setTtlDate(new Date().toString()); mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); } @Test @@ -1019,26 +971,25 @@ public class PolicyEngineServicesTest { .andExpect(status().isUnauthorized()); // Service Tests. mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setPolicyScope("test"); mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setPolicyName("name"); mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); pep.setTtlDate(new Date().toString()); mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep)) - .contentType(MediaType.APPLICATION_JSON).headers(headers) - .header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest()); + .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123")) + .andExpect(status().isBadRequest()); } - private void setCreateUpdateImpl() throws NoSuchMethodException, SecurityException, - IllegalAccessException, IllegalArgumentException, InvocationTargetException { - Method setter = XACMLPdpServlet.class.getDeclaredMethod("setCreateUpdatePolicyConstructor", - String.class); + private void setCreateUpdateImpl() throws NoSuchMethodException, SecurityException, IllegalAccessException, + IllegalArgumentException, InvocationTargetException { + Method setter = XACMLPdpServlet.class.getDeclaredMethod("setCreateUpdatePolicyConstructor", String.class); setter.setAccessible(true); setter.invoke(new XACMLPdpServlet(), CreateUpdatePolicyServiceImpl.class.getName()); } diff --git a/PolicyEngineAPI/pom.xml b/PolicyEngineAPI/pom.xml index da13a9a91..159d83151 100644 --- a/PolicyEngineAPI/pom.xml +++ b/PolicyEngineAPI/pom.xml @@ -78,6 +78,12 @@ + + org.projectlombok + lombok + 1.18.6 + provided + org.onap.policy.engine ONAP-XACML diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyNameType.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyNameType.java new file mode 100644 index 000000000..d1056c855 --- /dev/null +++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyNameType.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * PolicyEngineAPI + * ================================================================================ + * 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.api; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +/** + * The Class PolicyNameType. + */ +@Getter +@Setter +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PolicyNameType { + private String policyName; + private String policyScope; + private String policyType; + private String filePrefix; + private String clientScope; + private String fullPolicyName; +}