X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=applications%2Fguard%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Fpdp%2Fapplication%2Fguard%2FGuardTranslatorTest.java;h=efe698eb19c88facd6903407956d34db78af95f1;hb=refs%2Fchanges%2F79%2F111379%2F1;hp=36b43aeea18f11526dced1ee000075227ec34d00;hpb=a0ad29cdb6d6f541aac59f9e265f79d3ad085560;p=policy%2Fxacml-pdp.git diff --git a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java index 36b43aee..efe698eb 100644 --- a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java +++ b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/GuardTranslatorTest.java @@ -115,6 +115,7 @@ public class GuardTranslatorTest { // for (Map policies : completedJtst.getToscaTopologyTemplate().getPolicies()) { for (ToscaPolicy policy : policies.values()) { + LOGGER.info("Testing policy " + policy.getName()); if ("frequency-missing-properties".equals(policy.getName())) { assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> translator.convertPolicy(policy) @@ -135,6 +136,55 @@ public class GuardTranslatorTest { assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> translator.convertPolicy(policy) ).withMessageContaining("Missing blacklist"); + } else if ("filter-noalgorithm".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Missing algorithm"); + } else if ("filter-badalgorithm".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class) + .isThrownBy(() -> translator.convertPolicy(policy)) + .withMessageContaining( + "Unexpected value for algorithm, should be whitelist-overrides or blacklist-overrides"); + } else if ("filter-nofilter".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class) + .isThrownBy(() -> translator.convertPolicy(policy)) + .withMessageContaining("Missing filters"); + } else if ("filter-nocollection".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Filters is not a collection"); + } else if ("filter-noarray".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Filters is not a collection"); + } else if ("filter-missingfield".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Missing \'field\' from filter"); + } else if ("filter-badfield".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Unexpected value for field in filter"); + } else if ("filter-missingfilter".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Missing \'filter\' from filter"); + } else if ("filter-missingfunction".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Missing \'function\' from filter"); + } else if ("filter-badfunction".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Unexpected value for function in filter"); + } else if ("filter-missingblacklist".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Missing \'blacklist\' from filter"); + } else if ("filter-badblacklist".equals(policy.getName())) { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> + translator.convertPolicy(policy) + ).withMessageContaining("Unexpected value for blacklist in filter"); } } } @@ -166,7 +216,7 @@ public class GuardTranslatorTest { translator.convertPolicy(policy)); continue; } - PolicyType xacmlPolicy = translator.convertPolicy(policy); + PolicyType xacmlPolicy = (PolicyType) translator.convertPolicy(policy); assertThat(xacmlPolicy).isNotNull(); // // Let's dump it out @@ -190,6 +240,8 @@ public class GuardTranslatorTest { validateMinMax(policy, xacmlPolicy); } else if (GuardTranslator.POLICYTYPE_BLACKLIST.equals(policy.getType())) { validateBlacklist(policy, xacmlPolicy); + } else if (GuardTranslator.POLICYTYPE_FILTER.equals(policy.getType())) { + validateFilter(policy, xacmlPolicy); } } } @@ -260,8 +312,8 @@ public class GuardTranslatorTest { if (! (rule instanceof RuleType)) { continue; } - assertThat(((RuleType)rule).getCondition()).isNotNull(); - assertThat(((RuleType)rule).getCondition().getExpression()).isNotNull(); + assertThat(((RuleType) rule).getCondition()).isNotNull(); + assertThat(((RuleType) rule).getCondition().getExpression()).isNotNull(); } } @@ -272,7 +324,7 @@ public class GuardTranslatorTest { if (! (rule instanceof RuleType)) { continue; } - for (AnyOfType anyOf : ((RuleType)rule).getTarget().getAnyOf()) { + for (AnyOfType anyOf : ((RuleType) rule).getTarget().getAnyOf()) { assertThat(anyOf.getAllOf()).isNotEmpty(); for (AllOfType allOf : anyOf.getAllOf()) { assertThat(allOf.getMatch()).isNotEmpty(); @@ -300,20 +352,48 @@ public class GuardTranslatorTest { if (! (rule instanceof RuleType)) { continue; } - for (AnyOfType anyOf : ((RuleType)rule).getTarget().getAnyOf()) { + assertThat(((RuleType) rule).getTarget()).isNotNull(); + assertThat(((RuleType) rule).getTarget().getAnyOf()).hasSize(1); + for (AnyOfType anyOf : ((RuleType) rule).getTarget().getAnyOf()) { assertThat(anyOf.getAllOf()).isNotEmpty(); for (AllOfType allOf : anyOf.getAllOf()) { assertThat(allOf.getMatch()).isNotEmpty(); + assertThat(allOf.getMatch()).hasSize(1); for (MatchType match : allOf.getMatch()) { - if (ToscaDictionary.ID_RESOURCE_GUARD_TARGETID.toString().equals( - match.getAttributeDesignator().getAttributeId())) { - assertThat(policy.getProperties()).containsKey(GuardTranslator.FIELD_BLACKLIST); - foundBlacklist = true; - } + assertThat(match.getAttributeDesignator().getAttributeId()) + .isEqualTo(ToscaDictionary.ID_RESOURCE_GUARD_TARGETID.toString()); + assertThat(match.getAttributeValue().getContent()).containsAnyOf("vnf1", "vnf2"); + // + // This just checks that policy did have a blacklist in it. + // + assertThat(policy.getProperties()).containsKey(GuardTranslator.FIELD_BLACKLIST); + foundBlacklist = true; } } } } assertThat(foundBlacklist).isTrue(); } + + private void validateFilter(ToscaPolicy policy, PolicyType xacmlPolicy) { + assertThat(xacmlPolicy.getRuleCombiningAlgId()).endsWith("-overrides"); + for (Object rule : xacmlPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition()) { + if (! (rule instanceof RuleType)) { + continue; + } + assertThat(((RuleType) rule).getTarget()).isNotNull(); + assertThat(((RuleType) rule).getTarget().getAnyOf()).hasSize(1); + for (AnyOfType anyOf : ((RuleType) rule).getTarget().getAnyOf()) { + assertThat(anyOf.getAllOf()).isNotEmpty(); + for (AllOfType allOf : anyOf.getAllOf()) { + assertThat(allOf.getMatch()).isNotEmpty(); + assertThat(allOf.getMatch()).hasSize(1); + for (MatchType match : allOf.getMatch()) { + assertThat(match.getAttributeDesignator().getAttributeId()) + .startsWith(GuardPolicyRequest.PREFIX_RESOURCE_ATTRIBUTE_ID); + } + } + } + } + } }