Reject policy deployment with version mismatch
[policy/pap.git] / main / src / test / java / org / onap / policy / pap / main / rest / depundep / TestPdpGroupDeployProvider.java
index 6d193fe..7590c64 100644 (file)
@@ -521,6 +521,25 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         assertGroupUpdate(group, subgrp);
     }
 
+    @Test
+    public void testUpdateSubGroup_PolicyVersionMismatch() throws Exception {
+        PdpGroups groups = loadPdpGroups("createGroups.json");
+        PdpGroup newgrp = groups.getGroups().get(0);
+        PdpGroup dbgroup = new PdpGroup(newgrp);
+        when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+
+        // arrange for DB policy version to be different
+        PdpSubGroup dbsubgrp = dbgroup.getPdpSubgroups().get(0);
+        dbsubgrp.getPolicies().get(0).setVersion("9.9.9");
+
+        when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
+
+        assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+                        .hasMessageContaining("different version already deployed");
+
+        assertNoGroupAction();
+    }
+
     @Test
     public void testValidateSubGroup_PropertiesMismatch() throws Exception {
         PdpGroups groups = loadPdpGroups("createGroups.json");
@@ -603,6 +622,20 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         assertUpdate(requests, GROUP1_NAME, PDP4_TYPE, PDP4);
     }
 
+    @Test
+    public void testMakeUpdater_PolicyVersionMismatch() throws Exception {
+
+        // subgroup has a different version of the Policy
+        when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao_DiffVers.json"));
+
+        assertThatThrownBy(() -> prov.deployPolicies(loadRequest())).isInstanceOf(PfModelRuntimeException.class)
+                        .hasMessageContaining("pdpTypeC").hasMessageContaining("different version already deployed");
+
+        verify(dao, never()).createPdpGroups(any());
+        verify(dao, never()).updatePdpGroups(any());
+        verify(reqmap, never()).addRequest(any(PdpUpdate.class));
+    }
+
     @Test
     public void testMakeUpdater_NoPdps() throws Exception {