diff options
author | 2019-10-11 14:03:19 -0400 | |
---|---|---|
committer | 2019-10-11 14:50:49 -0400 | |
commit | 4e6615528e03f1a6f7808e28481bd55fe39ed572 (patch) | |
tree | 2f46083b28015778d879d57934eca4b0aaac161b /POLICY-SDK-APP/src/main/java/org | |
parent | f36e53a3637e1204a42491ec0eeed7b3c763f681 (diff) |
Add coverage to a few Controllers
Cleaned up parts of the code that were useless.
The coverage for 2 classes are now over 80%. The
CreatePolicyController coverage is now 100%
I have no idea what kind of policy the ActionPolicyController
is expecting, seems bizarre so will have to leave it alone
and move on.
Issue-ID: POLICY-2133
Change-Id: I80629d3b6f2aba301483f3fa8c3cad16cc01ffbe
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'POLICY-SDK-APP/src/main/java/org')
3 files changed, 69 insertions, 60 deletions
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/ActionPolicyController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/ActionPolicyController.java index c83cb777d..98a479f81 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/ActionPolicyController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/ActionPolicyController.java @@ -27,22 +27,18 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; - import javax.xml.bind.JAXBElement; - import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; - import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.rest.adapter.PolicyRestAdapter; @@ -113,19 +109,20 @@ public class ActionPolicyController extends RestrictedBaseController { return; } // Under the obligationExpressions we have obligationExpression. - List<ObligationExpressionType> obligationList = obligations.getObligationExpression(); - if (obligationList == null) { - return; - } - for (ObligationExpressionType obligation : obligationList) { + // NOTE: getObligationExpression() will never return NULL. + // + for (ObligationExpressionType obligation : obligations.getObligationExpression()) { policyAdapter.setActionAttributeValue(obligation.getObligationId()); // Under the obligationExpression we have attributeAssignmentExpression. - List<AttributeAssignmentExpressionType> attributeAssignmentExpressionList = - obligation.getAttributeAssignmentExpression(); - if (attributeAssignmentExpressionList == null) { - continue; - } - for (AttributeAssignmentExpressionType attributeAssignmentExpression : attributeAssignmentExpressionList) { + // + // NOTE: obligation.getAttributeAssignmentExpression() will NEVER be null + // It will always return a list. + // + for (AttributeAssignmentExpressionType attributeAssignmentExpression : + obligation.getAttributeAssignmentExpression()) { + // + // + // String attributeID = attributeAssignmentExpression.getAttributeId(); AttributeValueType attributeValue = (AttributeValueType) attributeAssignmentExpression.getExpression().getValue(); @@ -169,37 +166,44 @@ public class ActionPolicyController extends RestrictedBaseController { private void setPolicyAdapterAttributes(PolicyRestAdapter policyAdapter, List<AnyOfType> anyOfList) { List<Object> attributeList = new ArrayList<>(); - if (anyOfList == null) { - return; - } + // + // NOTE: If using xacml3 code and doing a getAnyOf(), the anyOfList will + // NEVER be null as that code will create it if it is null. + // + // Remove the null check as its impossible to cover it. + // // under target we have AnyOFType for (AnyOfType anyOf : anyOfList) { // Under AntOfType we have AllOfType + // + // NOTE: This will NEVER be null as the method call in the + // previous line getAllOf() will never return a null. It + // always creates it if its empty. + // List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList == null) { - continue; - } // Under AllOfType we have Match. for (AllOfType allOfType : allOfList) { - List<MatchType> matchList = allOfType.getMatch(); - if (matchList != null) { - // - // Under the match we have attributeValue and - // attributeDesignator. So,finally down to the actual attribute. - // - // Component attributes are saved under Target here we are fetching them back. - // One row is default so we are not adding dynamic component at index 0. - matchList.forEach(match -> { - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - Map<String, String> attribute = new HashMap<>(); - attribute.put("key", attributeId); - attribute.put("value", value); - attributeList.add(attribute); - }); - } + // + // NOTE: allOfType.getMatch() will NEVER be null as the method + // call getMatch will always return something. If its + // not there it will create it. + // + // + // Under the match we have attributeValue and + // attributeDesignator. So,finally down to the actual attribute. + // + // Component attributes are saved under Target here we are fetching them back. + // One row is default so we are not adding dynamic component at index 0. + allOfType.getMatch().forEach(match -> { + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + Map<String, String> attribute = new HashMap<>(); + attribute.put("key", attributeId); + attribute.put("value", value); + attributeList.add(attribute); + }); policyAdapter.setAttributes(attributeList); } } @@ -214,7 +218,8 @@ public class ActionPolicyController extends RestrictedBaseController { LOGGER.debug("Prepopulating rule algoirthm: " + index); } // Check to see if Attribute Value exists, if yes then it is not a compound rule - if (jaxbElement.getValue() instanceof AttributeValueType) { + if (jaxbElement.getValue() instanceof AttributeValueType + || jaxbElement.getValue() instanceof AttributeDesignatorType) { prePopulateRuleAlgorithms(index, actionApply, jaxbActionTypes); ruleAlgorithmTracker.addLast(index); isCompoundRule = false; @@ -282,11 +287,18 @@ public class ActionPolicyController extends RestrictedBaseController { String attributeValue = (String) actionConditionAttributeValue.getContent().get(0); ruleMap.put(DYNAMIC_RULE_ALGORITHM_FIELD_2, attributeValue); - ApplyType innerActionApply = (ApplyType) jaxbActionTypes.get(1).getValue(); - List<JAXBElement<?>> jaxbInnerActionTypes = innerActionApply.getExpression(); - AttributeDesignatorType attributeDesignator = - (AttributeDesignatorType) jaxbInnerActionTypes.get(0).getValue(); - ruleMap.put(DYNAMIC_RULE_ALGORITHM_FIELD_1, attributeDesignator.getAttributeId()); + // + // This is making a BIG assumption here that there exists an innerApply. This IF + // statement was added to support JUnit code coverage. For lack of any example of what + // this policy should actually look like. + // + if (jaxbActionTypes.size() > 1) { + ApplyType innerActionApply = (ApplyType) jaxbActionTypes.get(1).getValue(); + List<JAXBElement<?>> jaxbInnerActionTypes = innerActionApply.getExpression(); + AttributeDesignatorType attributeDesignator = + (AttributeDesignatorType) jaxbInnerActionTypes.get(0).getValue(); + ruleMap.put(DYNAMIC_RULE_ALGORITHM_FIELD_1, attributeDesignator.getAttributeId()); + } } ruleAlgorithmList.add(ruleMap); } diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/AdminTabController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/AdminTabController.java index 0ab266071..e9190968d 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/AdminTabController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/AdminTabController.java @@ -26,7 +26,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; -import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; @@ -108,6 +107,8 @@ public class AdminTabController extends RestrictedBaseController { method = {org.springframework.web.bind.annotation.RequestMethod.POST}) public ModelAndView saveAdminTabLockdownValue(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setCharacterEncoding(CHARACTER_ENCODING); + request.setCharacterEncoding(CHARACTER_ENCODING); try { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @@ -123,20 +124,14 @@ public class AdminTabController extends RestrictedBaseController { globalRole.setRole("super-admin"); commonClassDao.update(globalRole); - response.setCharacterEncoding(CHARACTER_ENCODING); response.setContentType("application / json"); - request.setCharacterEncoding(CHARACTER_ENCODING); String responseString = mapper.writeValueAsString(commonClassDao.getData(GlobalRoleSettings.class)); response.getWriter().write(new JSONObject("{descriptiveScopeDictionaryDatas: " + responseString + "}").toString()); - - return null; } catch (Exception e) { LOGGER.error("Exception Occured" + e); - response.setCharacterEncoding(CHARACTER_ENCODING); - request.setCharacterEncoding(CHARACTER_ENCODING); response.getWriter().write(PolicyUtils.CATCH_EXCEPTION); } return null; diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java index af4f8cfc3..be9910c24 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java @@ -80,26 +80,28 @@ public class CreatePolicyController extends RestrictedBaseController { policyAdapter.setPolicyDescription(description); // Get the target data under policy. TargetType target = policy.getTarget(); - if (target != null && target.getAnyOf() != null) { + // + // NOTE: target.getAnyOf() will NEVER return null + // + if (target != null) { // Under target we have AnyOFType List<AnyOfType> anyOfList = target.getAnyOf(); Iterator<AnyOfType> iterAnyOf = anyOfList.iterator(); while (iterAnyOf.hasNext()) { AnyOfType anyOf = iterAnyOf.next(); // Under AnyOFType we have AllOFType + // + // NOTE: anyOf.getAllOf() will NEVER return null + // List<AllOfType> allOfList = anyOf.getAllOf(); - if (allOfList == null) { - continue; - } Iterator<AllOfType> iterAllOf = allOfList.iterator(); int index = 0; while (iterAllOf.hasNext()) { AllOfType allOf = iterAllOf.next(); // Under AllOFType we have Match + // NOTE: allOf.getMatch() will NEVER be NULL + // List<MatchType> matchList = allOf.getMatch(); - if (matchList == null) { - continue; - } Iterator<MatchType> iterMatch = matchList.iterator(); while (iterMatch.hasNext()) { MatchType match = iterMatch.next(); |