Reserve version integer check and delete eligibility check
[policy/api.git] / main / src / test / java / org / onap / policy / api / main / rest / provider / TestLegacyGuardPolicyProvider.java
index fb7c21c..e892d41 100644 (file)
@@ -58,6 +58,8 @@ public class TestLegacyGuardPolicyProvider {
     private static StandardCoder standardCoder;
 
     private static final String POLICY_RESOURCE = "policies/vDNS.policy.guard.frequency.input.json";
+    private static final String POLICY_RESOURCE_VER1 = "policies/vDNS.policy.guard.frequency.input.ver1.json";
+    private static final String POLICY_RESOURCE_VER2 = "policies/vDNS.policy.guard.frequency.input.ver2.json";
     private static final String POLICY_TYPE_RESOURCE =
             "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.json";
     private static final String POLICY_TYPE_ID = "onap.policies.controlloop.guard.FrequencyLimiter:1.0.0";
@@ -103,11 +105,56 @@ public class TestLegacyGuardPolicyProvider {
 
         assertThatThrownBy(() -> {
             guardPolicyProvider.fetchGuardPolicy("dummy", null);
-        }).hasMessage("no policy found for policy ID: dummy");
+        }).hasMessage("no policy found for policy: dummy:null");
 
         assertThatThrownBy(() -> {
             guardPolicyProvider.fetchGuardPolicy("dummy", "dummy");
-        }).hasMessage("no policy found for policy ID: dummy");
+        }).hasMessage("legacy policy version is not an integer");
+
+        assertThatCode(() -> {
+            String policyTypeString = ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE);
+            ToscaServiceTemplate policyTypeServiceTemplate =
+                    standardCoder.decode(policyTypeString, ToscaServiceTemplate.class);
+            policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
+
+            String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_VER1);
+            LegacyGuardPolicyInput policyToCreate = standardCoder.decode(policyString, LegacyGuardPolicyInput.class);
+            Map<String, LegacyGuardPolicyOutput> createdPolicy = guardPolicyProvider.createGuardPolicy(policyToCreate);
+            assertNotNull(createdPolicy);
+            assertFalse(createdPolicy.isEmpty());
+
+            policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_VER2);
+            policyToCreate = standardCoder.decode(policyString, LegacyGuardPolicyInput.class);
+            createdPolicy = guardPolicyProvider.createGuardPolicy(policyToCreate);
+            assertNotNull(createdPolicy);
+            assertFalse(createdPolicy.isEmpty());
+
+            Map<String, LegacyGuardPolicyOutput> firstVersion =
+                    guardPolicyProvider.fetchGuardPolicy("guard.frequency.scaleout", "1");
+            assertNotNull(firstVersion);
+            assertEquals("1",
+                    firstVersion.get("guard.frequency.scaleout").getMetadata().get("policy-version").toString());
+
+            Map<String, LegacyGuardPolicyOutput> latestVersion =
+                    guardPolicyProvider.fetchGuardPolicy("guard.frequency.scaleout", null);
+            assertNotNull(latestVersion);
+            assertEquals("2",
+                    latestVersion.get("guard.frequency.scaleout").getMetadata().get("policy-version").toString());
+        }).doesNotThrowAnyException();
+
+        assertThatThrownBy(() -> {
+            guardPolicyProvider.fetchGuardPolicy("guard.frequency.scaleout", "1.0.0");
+        }).hasMessage("legacy policy version is not an integer");
+
+        assertThatThrownBy(() -> {
+            guardPolicyProvider.fetchGuardPolicy("guard.frequency.scaleout", "latest");
+        }).hasMessage("legacy policy version is not an integer");
+
+        assertThatCode(() -> {
+            guardPolicyProvider.deleteGuardPolicy("guard.frequency.scaleout", "1");
+            guardPolicyProvider.deleteGuardPolicy("guard.frequency.scaleout", "2");
+            policyTypeProvider.deletePolicyType("onap.policies.controlloop.guard.FrequencyLimiter", "1.0.0");
+        }).doesNotThrowAnyException();
     }
 
     @Test
@@ -124,9 +171,7 @@ public class TestLegacyGuardPolicyProvider {
             ToscaServiceTemplate policyTypeServiceTemplate =
                     standardCoder.decode(policyTypeString, ToscaServiceTemplate.class);
             policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
-        }).doesNotThrowAnyException();
 
-        assertThatCode(() -> {
             String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
             LegacyGuardPolicyInput policyToCreate = standardCoder.decode(policyString, LegacyGuardPolicyInput.class);
             Map<String, LegacyGuardPolicyOutput> createdPolicy = guardPolicyProvider.createGuardPolicy(policyToCreate);
@@ -144,45 +189,41 @@ public class TestLegacyGuardPolicyProvider {
 
         assertThatThrownBy(() -> {
             guardPolicyProvider.deleteGuardPolicy("dummy", null);
-        }).hasMessage("version is marked @NonNull but is null");
+        }).hasMessage("legacy policy version is not an integer");
 
         assertThatThrownBy(() -> {
-            guardPolicyProvider.deleteGuardPolicy("dummy", "dummy");
-        }).hasMessage("no policy found for policy ID: dummy");
+            guardPolicyProvider.deleteGuardPolicy("dummy", "1.0.0");
+        }).hasMessage("legacy policy version is not an integer");
 
         assertThatCode(() -> {
             String policyTypeString = ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE);
             ToscaServiceTemplate policyTypeServiceTemplate =
                     standardCoder.decode(policyTypeString, ToscaServiceTemplate.class);
             policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
-        }).doesNotThrowAnyException();
 
-        assertThatCode(() -> {
             String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
             LegacyGuardPolicyInput policyToCreate = standardCoder.decode(policyString, LegacyGuardPolicyInput.class);
             Map<String, LegacyGuardPolicyOutput> createdPolicy = guardPolicyProvider.createGuardPolicy(policyToCreate);
             assertNotNull(createdPolicy);
             assertFalse(createdPolicy.isEmpty());
-        }).doesNotThrowAnyException();
 
-        assertThatCode(() -> {
             Map<String, LegacyGuardPolicyOutput> deletedPolicy = guardPolicyProvider
-                    .deleteGuardPolicy("guard.frequency.scaleout", "1.0.0");
+                    .deleteGuardPolicy("guard.frequency.scaleout", "1");
             assertNotNull(deletedPolicy);
             assertFalse(deletedPolicy.isEmpty());
             assertTrue(deletedPolicy.containsKey("guard.frequency.scaleout"));
             assertEquals("onap.policies.controlloop.guard.FrequencyLimiter",
                     deletedPolicy.get("guard.frequency.scaleout").getType());
-            assertEquals("1.0.0", deletedPolicy.get("guard.frequency.scaleout").getVersion());
+            assertEquals("1",
+                    deletedPolicy.get("guard.frequency.scaleout").getMetadata().get("policy-version").toString());
         }).doesNotThrowAnyException();
 
         assertThatThrownBy(() -> {
-            guardPolicyProvider.deleteGuardPolicy("guard.frequency.scaleout", "1.0.0");
-        }).hasMessage("no policy found for policy ID: guard.frequency.scaleout");
+            guardPolicyProvider.deleteGuardPolicy("guard.frequency.scaleout", "1");
+        }).hasMessage("no policy found for policy: guard.frequency.scaleout:1");
 
         assertThatCode(() -> {
             policyTypeProvider.deletePolicyType("onap.policies.controlloop.guard.FrequencyLimiter", "1.0.0");
         }).doesNotThrowAnyException();
-
     }
 }