1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoUpdateVfModuleTest.java
index bba6f62..fa0bc49 100644 (file)
@@ -22,10 +22,19 @@ package org.openecomp.mso.bpmn.infrastructure;
 \r
 \r
 \r
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;\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.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleIdNoResponse;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVolumeGroupById;\r
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;\r
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
@@ -41,7 +50,6 @@ import org.junit.Assert;
 import org.junit.Ignore;\r
 import org.junit.Test;\r
 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
-import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;\r
 import org.openecomp.mso.bpmn.mock.FileUtil;\r
 \r
 /**\r
@@ -112,5 +120,125 @@ public class DoUpdateVfModuleTest extends WorkflowTest {
                \r
                logEnd();\r
        }\r
+       \r
+       /**\r
+        * Test the happy path through the flow with Building Blocks interface.\r
+        */\r
+       @Test   \r
+       \r
+       @Deployment(resources = {\r
+                       "subprocess/DoUpdateVfModule.bpmn",\r
+                       "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
+                       "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
+                       "subprocess/SDNCAdapterV1.bpmn",\r
+                       "subprocess/VnfAdapterRestV1.bpmn",\r
+                       "subprocess/UpdateAAIGenericVnf.bpmn",\r
+                       "subprocess/UpdateAAIVfModule.bpmn"\r
+               })\r
+       public void happyPathBB() throws IOException {\r
+               \r
+               logStart();\r
+               \r
+               MockAAIVfModule();\r
+               MockPatchGenericVnf("skask");\r
+               MockPatchVfModuleId("skask", ".*");\r
+               MockSDNCAdapterVfModule();\r
+               MockVNFAdapterRestVfModule();\r
+               \r
+               String businessKey = UUID.randomUUID().toString();\r
+               Map<String, Object> variables = new HashMap<String, Object>();\r
+               variables.put("mso-request-id", "DEV-VF-0011");\r
+               variables.put("isDebugLogEnabled","true");\r
+               variables.put("msoRequestId", "DEV-VF-0011");\r
+               variables.put("isBaseVfModule", "false");\r
+               variables.put("isDebugLogEnabled", "true");\r
+               variables.put("disableRollback", "true");\r
+               variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");\r
+               variables.put("vnfId", "skask");\r
+               variables.put("vfModuleId", "supercool");\r
+               variables.put("vnfType", "pcrf-capacity");\r
+               variables.put("isVidRequest", "true");\r
+               variables.put("volumeGroupId", "78987");\r
+               variables.put("usePreload", true);\r
+               \r
+               variables.put("sdncVersion", "1702");\r
+               \r
+               variables.put("lcpCloudRegionId", "MDTWNJ21");\r
+               variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");\r
+               \r
+               String vfModuleModelInfo = "{ "+ "\"modelType\": \"vfModule\"," +\r
+                               "\"modelInvariantUuid\": \"introvert\"," + \r
+                               "\"modelUuid\": \"3.14\"," +\r
+                               "\"modelName\": \"STMTN5MMSC21-MMSC::model-1-0\"," +\r
+                               "\"modelVersion\": \"1\"," + \r
+                               "\"modelCustomizationUuid\": \"MODEL-123\"" + "}";\r
+               variables.put("vfModuleModelInfo", vfModuleModelInfo);\r
+               \r
+               String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +\r
+                               "\"modelInvariantUuid\": \"introvert\"," + \r
+                               "\"modelUuid\": \"3.14\"," +\r
+                               "\"modelName\": \"VNF-STMTN5MMSC21-MMSC::model-1-0\"," +\r
+                               "\"modelVersion\": \"1\"," + \r
+                               "\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";\r
+       variables.put("vnfModelInfo", vnfModelInfo);\r
+               \r
+               invokeSubProcess("DoUpdateVfModule", businessKey, variables);\r
+               \r
+               injectSDNCCallbacks(callbacks, "changeassign, query");\r
+               injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
+               injectSDNCCallbacks(callbacks, "activate");\r
+\r
+               waitForProcessEnd(businessKey, 10000);\r
+               \r
+               Assert.assertTrue(isProcessEnded(businessKey));\r
+               checkVariable(businessKey, "DoUpdateVfModuleSuccessIndicator", true);\r
+               \r
+               String heatStackId = (String) getVariableFromHistory(businessKey, "DOUPVfMod_heatStackId");\r
+               System.out.println("Heat stack Id from AAI: " + heatStackId);\r
+               \r
+               logEnd();\r
+       }\r
+       \r
+       // start of mocks used locally and by other VF Module unit tests\r
+       public static void MockSDNCAdapterVfModule() {\r
+               // simplified the implementation to return "success" for all requests\r
+               stubFor(post(urlEqualTo("/SDNCAdapter"))\r
+//                     .withRequestBody(containing("SvcInstanceId><"))\r
+                       .willReturn(aResponse()\r
+                               .withStatus(200)\r
+                               .withHeader("Content-Type", "text/xml")\r
+                               .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));\r
+//             stubFor(post(urlEqualTo("/SDNCAdapter"))\r
+//                             .withRequestBody(containing("vnf-type>STMTN"))\r
+//                             .willReturn(aResponse()\r
+//                                     .withStatus(200)\r
+//                                     .withHeader("Content-Type", "text/xml")\r
+//                                     .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));\r
+//             stubFor(post(urlEqualTo("/SDNCAdapter"))\r
+//                             .withRequestBody(containing("SvcAction>query"))\r
+//                             .willReturn(aResponse()\r
+//                                     .withStatus(200)\r
+//                                     .withHeader("Content-Type", "text/xml")\r
+//                                     .withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));\r
+       }\r
+\r
+       public static void MockVNFAdapterRestVfModule() {\r
+               stubFor(put(urlEqualTo("/vnfs/v1/vnfs/skask/vf-modules/supercool"))\r
+                       .willReturn(aResponse()\r
+                               .withStatus(202)\r
+                               .withHeader("Content-Type", "application/xml")));\r
+               stubFor(post(urlMatching("/vnfs/v1/vnfs/.*/vf-modules"))\r
+                               .willReturn(aResponse()\r
+                                       .withStatus(202)\r
+                                       .withHeader("Content-Type", "application/xml")));\r
+               stubFor(post(urlEqualTo("/vnfs/v1/vnfs/skask/vf-modules"))\r
+                       .willReturn(aResponse()\r
+                               .withStatus(202)\r
+                               .withHeader("Content-Type", "application/xml")));\r
+               stubFor(put(urlEqualTo("/vnfs/v1/volume-groups/78987"))\r
+                       .willReturn(aResponse()\r
+                               .withStatus(202)\r
+                               .withHeader("Content-Type", "application/xml")));\r
+       }\r
 }\r
 \r