AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoDeleteVnfAndModulesTest.java
index a9dde90..c53beb1 100644 (file)
@@ -24,14 +24,18 @@ import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;\r
 import static com.github.tomakehurst.wiremock.client.WireMock.delete;\r
 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
+import static com.github.tomakehurst.wiremock.client.WireMock.put;\r
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
 import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotEquals;\r
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteGenericVnf;\r
 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;\r
 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;\r
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
 \r
@@ -47,6 +51,10 @@ import org.junit.Test;
 import org.openecomp.mso.bpmn.common.BPMNUtil;\r
 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
 import org.openecomp.mso.bpmn.mock.FileUtil;\r
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;\r
+import org.openecomp.mso.bpmn.core.domain.ModuleResource;\r
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;\r
+import org.openecomp.mso.bpmn.core.domain.VnfResource;\r
 \r
 public class DoDeleteVnfAndModulesTest extends WorkflowTest {\r
        private final CallbackSet callbacks = new CallbackSet();\r
@@ -58,6 +66,11 @@ public class DoDeleteVnfAndModulesTest extends WorkflowTest {
                        "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
                        "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
                        "</deleteVfModuleResponse>" + EOL;\r
+       private final String sdncAdapterDeleteCallback =\r
+                       "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +\r
+                       "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
+                       "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
+                       "</output>" + EOL;\r
 \r
        public DoDeleteVnfAndModulesTest () throws IOException {\r
                callbacks.put("deactivate", FileUtil.readResourceFile(\r
@@ -65,6 +78,7 @@ public class DoDeleteVnfAndModulesTest extends WorkflowTest {
                callbacks.put("unassign", FileUtil.readResourceFile(\r
                                "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
                callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
+               callbacks.put("sdncDelete", sdncAdapterDeleteCallback);\r
 \r
        }\r
 \r
@@ -178,8 +192,136 @@ public class DoDeleteVnfAndModulesTest extends WorkflowTest {
                \r
                variables.put("sdncVersion", "1707");\r
                \r
+               \r
+               ServiceDecomposition sd = new ServiceDecomposition();           \r
+               ModelInfo serviceModel = new ModelInfo();\r
+               serviceModel.setModelName("servicewithVNFs");\r
+               sd.setModelInfo(serviceModel);                  \r
+               VnfResource vr = new VnfResource();\r
+               ModelInfo mvr = new ModelInfo();\r
+               mvr.setModelName("vSAMP12");\r
+               mvr.setModelInstanceName("v123");\r
+               mvr.setModelInvariantUuid("");\r
+               mvr.setModelVersion("1.0");\r
+               mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
+               vr.setModelInfo(mvr);\r
+               vr.constructVnfType("vnf1");                    \r
+               vr.setNfType("somenftype");\r
+               vr.setNfRole("somenfrole");\r
+               vr.setNfFunction("somenffunction");\r
+               vr.setNfNamingCode("somenamingcode");   \r
+               ModuleResource mr = new ModuleResource();\r
+               ModelInfo mvmr = new ModelInfo();\r
+               mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");\r
+               mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
+               mvmr.setModelUuid("1.0");\r
+               mvmr.setModelCustomizationUuid("MODEL-123");\r
+               mr.setModelInfo(mvmr);\r
+               mr.setIsBase(true);\r
+               mr.setVfModuleLabel("MODULELABEL");\r
+               vr.addVfModule(mr);\r
+               sd.addVnfResource(vr);                  \r
+               variables.put("serviceDecomposition", sd);\r
+               \r
+       }\r
+       \r
+       @Test   \r
+       @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModule.bpmn", "subprocess/UpdateAAIVfModule.bpmn", "subprocess/PrepareUpdateAAIVfModule.bpmn", "subprocess/DoDeleteVfModuleFromVnf.bpmn", "subprocess/VnfAdapterRestV1.bpmn", "subprocess/DeleteAAIVfModule.bpmn"})\r
+       public void testDoDeleteVnfAndModulesDirectDelete_successVnfAndModules() throws Exception{\r
+               MockDoDeleteVfModule_SDNCSuccess();\r
+               MockDoDeleteVfModule_DeleteVNFSuccess();\r
+               mockSDNCAdapter(200);\r
+               MockAAIGenericVnfSearch();\r
+               MockAAIVfModulePUT(false);\r
+               MockAAIDeleteGenericVnf();\r
+               MockAAIDeleteVfModule();\r
+               MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
+\r
+               String businessKey = UUID.randomUUID().toString();\r
+               Map<String, Object> variables = new HashMap<>();\r
+               setVariablesVnfAndModulesDirectDelete(variables);\r
+               invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);\r
+               \r
+               injectVNFRestCallbacks(callbacks, "vnfDelete");         \r
+               injectSDNCCallbacks(callbacks, "sdncDelete");\r
+               MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");                          \r
+\r
+               waitForProcessEnd(businessKey, 10000);\r
+\r
+               Assert.assertTrue(isProcessEnded(businessKey));         \r
+\r
+               String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");\r
+               \r
+               // WorkflowException is expected here, since empty VNF cannot be simulated here\r
+               assertNotEquals(null, workflowException);\r
+       }\r
+\r
+       \r
+       private void setVariablesVnfAndModulesDirectDelete(Map<String, Object> variables) {\r
+               variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");                \r
+               variables.put("isDebugLogEnabled", "true");\r
+               variables.put("vnfId","a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
+               variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
+                               \r
+               variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
+               //variables.put("testVnfId","testVnfId123");\r
+               \r
+               variables.put("lcpCloudRegionId", "RDM2WAGPLCP");\r
+               variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");\r
+               \r
+               variables.put("sdncVersion", "1702");\r
+               \r
+               \r
+               ServiceDecomposition sd = new ServiceDecomposition();           \r
+               ModelInfo serviceModel = new ModelInfo();\r
+               serviceModel.setModelName("servicewithVNFs");\r
+               sd.setModelInfo(serviceModel);                  \r
+               VnfResource vr = new VnfResource();\r
+               ModelInfo mvr = new ModelInfo();\r
+               mvr.setModelName("vSAMP12");\r
+               mvr.setModelInstanceName("v123");\r
+               mvr.setModelInvariantUuid("");\r
+               mvr.setModelVersion("1.0");\r
+               mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
+               vr.setModelInfo(mvr);\r
+               vr.constructVnfType("vnf1");                    \r
+               vr.setNfType("somenftype");\r
+               vr.setNfRole("somenfrole");\r
+               vr.setNfFunction("somenffunction");\r
+               vr.setNfNamingCode("somenamingcode");   \r
+               ModuleResource mr = new ModuleResource();\r
+               ModelInfo mvmr = new ModelInfo();\r
+               mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");\r
+               mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
+               mvmr.setModelUuid("1.0");\r
+               mvmr.setModelCustomizationUuid("MODEL-123");\r
+               mr.setModelInfo(mvmr);\r
+               mr.setIsBase(true);\r
+               mr.setVfModuleLabel("MODULELABEL");\r
+               vr.addVfModule(mr);\r
+               sd.addVnfResource(vr);                  \r
+               variables.put("serviceDecomposition", sd);\r
+               \r
        }\r
        \r
+       public static void MockAAIVfModulePUT(boolean isCreate){\r
+               stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
+                               .withRequestBody(containing("MMSC"))\r
+                               .willReturn(aResponse()\r
+                                               .withStatus(isCreate ? 201 : 200)));\r
+               stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
+                               .withRequestBody(containing("PCRF"))\r
+                               .willReturn(aResponse()\r
+                                               .withStatus(500)\r
+                                               .withHeader("Content-Type", "text/xml")\r
+                                               .withBodyFile("aaiFault.xml")));\r
+               stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))                          \r
+                               .willReturn(aResponse()\r
+                                       .withStatus(200)));\r
+       }\r
+       \r
+\r
+       \r
 \r
        public static void MockDoDeleteVfModule_SDNCSuccess() {\r
                stubFor(post(urlEqualTo("/SDNCAdapter"))\r
@@ -207,4 +349,4 @@ public class DoDeleteVnfAndModulesTest extends WorkflowTest {
                                .withStatus(202)\r
                                .withHeader("Content-Type", "application/xml")));\r
        }\r
-}
\ No newline at end of file
+}\r