Changed identifiers to concept identifiers
[policy/models.git] / models-pdp / src / test / java / org / onap / policy / models / pdp / concepts / PdpGroupFilterTest.java
index 89ee5b9..89a1333 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2021 Nordix Foundation.
+ *  Modifications 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.
@@ -26,15 +27,14 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.List;
-
+import java.util.stream.Collectors;
 import org.junit.Before;
 import org.junit.Test;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.resources.ResourceUtils;
 import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 
 /**
  * Test of the {@link PdpGroupFilter} class.
@@ -42,6 +42,20 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifi
  * @author Liam Fallon (liam.fallon@est.tech)
  */
 public class PdpGroupFilterTest {
+    private static final String POLICY_TYPE3 = "policy.type.3";
+    private static final String POLICY_TYPE2 = "policy.type.2";
+    private static final String POLICY_TYPE1 = "policy.type.1";
+    private static final String POLICY_TYPE0 = "policy.type.0";
+    private static final String POLICY3 = "Policy3";
+    private static final String POLICY2 = "Policy2";
+    private static final String POLICY1 = "Policy1";
+    private static final String POLICY0 = "Policy0";
+    private static final String NON_EXISTANT = "Nonexistant";
+    private static final String VERSION9 = "9.9.9";
+    private static final String VERSION7 = "7.8.9";
+    private static final String VERSION4 = "4.5.6";
+    private static final String VERSION1 = "1.2.3";
+    private static final String VERSION0 = "0.1.2";
     private List<PdpGroup> pdpGroupList;
 
     /**
@@ -62,7 +76,7 @@ public class PdpGroupFilterTest {
 
         assertThatThrownBy(() -> {
             filter.filter(null);
-        }).hasMessage("originalList is marked @NonNull but is null");
+        }).hasMessageMatching("originalList is marked .*ull but is null");
     }
 
     @Test
@@ -159,45 +173,61 @@ public class PdpGroupFilterTest {
 
     @Test
     public void testFilterPolicyType() {
-        List<ToscaPolicyTypeIdentifier> identifierList = new ArrayList<>();
+        List<ToscaConceptIdentifier> identifierList = new ArrayList<>();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(NON_EXISTANT, VERSION1));
         PdpGroupFilter filter =
                 PdpGroupFilter.builder().policyTypeList(identifierList).build();
         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
         assertEquals(0, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        // don't match wild cards
+        identifierList.add(new ToscaConceptIdentifier(NON_EXISTANT, VERSION1));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        final List<PdpGroup> wildCards =
+                        pdpGroupList.stream().map(this::makeWildCardPolicyTypes).collect(Collectors.toList());
+        filteredList = filter.filter(wildCards);
+        assertEquals(0, filteredList.size());
+        identifierList.clear();
+
+        // match wild cards
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(wildCards);
+        assertEquals(4, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(4, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE1, VERSION4));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(4, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE2, VERSION7));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(2, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE3, VERSION0));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(2, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "9.9.9"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        identifierList.add(new ToscaConceptIdentifier(NON_EXISTANT, VERSION1));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION9));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE1, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE2, VERSION7));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE3, VERSION0));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(5, filteredList.size());
@@ -207,82 +237,103 @@ public class PdpGroupFilterTest {
         assertEquals(0, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(2, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE1, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE2, VERSION7));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE0, VERSION1));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE1, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE3, VERSION0));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
-        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE1, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY_TYPE3, VERSION0));
         filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
     }
 
+    /**
+     * Makes a clone of a PdpGroup, changing all occurrences of supported policy type,
+     * "policy.type.0", to a wild card type, "policy.type.*".
+     *
+     * @param group group to be cloned
+     * @return a new PdpGroup containing wild card policy types
+     */
+    private PdpGroup makeWildCardPolicyTypes(PdpGroup group) {
+        PdpGroup newGroup = new PdpGroup(group);
+
+        for (PdpSubGroup subgroup : newGroup.getPdpSubgroups()) {
+            for (ToscaConceptIdentifier subType : subgroup.getSupportedPolicyTypes()) {
+                if (POLICY_TYPE0.equals(subType.getName())) {
+                    subType.setName("policy.type.*");
+                }
+            }
+        }
+
+        return newGroup;
+    }
+
     @Test
     public void testFilterPolicy() {
-        List<ToscaPolicyIdentifier> identifierList = new ArrayList<>();
+        List<ToscaConceptIdentifier> identifierList = new ArrayList<>();
 
-        identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(NON_EXISTANT, VERSION1));
         PdpGroupFilter filter =
                 PdpGroupFilter.builder().policyList(identifierList).build();
         List<PdpGroup> filteredList = filter.filter(pdpGroupList);
         assertEquals(0, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION9));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(0, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(4, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY1, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY2, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(2, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY3, VERSION1));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
         identifierList.clear();
 
-        identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(NON_EXISTANT, VERSION1));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION9));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY1, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY2, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY3, VERSION1));
         filter = PdpGroupFilter.builder().policyList(identifierList).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(5, filteredList.size());
@@ -292,27 +343,27 @@ public class PdpGroupFilterTest {
         assertEquals(0, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(3, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY0, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY1, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY2, VERSION4));
         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());
 
         identifierList.clear();
-        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
-        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        identifierList.add(new ToscaConceptIdentifier(POLICY2, VERSION4));
+        identifierList.add(new ToscaConceptIdentifier(POLICY3, VERSION1));
         filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
         filteredList = filter.filter(pdpGroupList);
         assertEquals(1, filteredList.size());