1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoDeleteVfModuleFromVnfTest.java
1 package org.openecomp.mso.bpmn.infrastructure;\r
2 \r
3 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;\r
4 import static com.github.tomakehurst.wiremock.client.WireMock.containing;\r
5 import static com.github.tomakehurst.wiremock.client.WireMock.delete;\r
6 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
7 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
8 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
9 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
10 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;\r
11 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;\r
12 \r
13 import java.io.IOException;\r
14 import java.util.HashMap;\r
15 import java.util.Map;\r
16 import java.util.UUID;\r
17 \r
18 import org.camunda.bpm.engine.test.Deployment;\r
19 import org.junit.Test;\r
20 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
21 import org.openecomp.mso.bpmn.core.WorkflowException;\r
22 \r
23 public class DoDeleteVfModuleFromVnfTest extends WorkflowTest {\r
24         private final CallbackSet callbacks = new CallbackSet();\r
25         \r
26         private static final String EOL = "\n";\r
27 \r
28         private final String vnfAdapterDeleteCallback = \r
29                 "<deleteVfModuleResponse>" + EOL +\r
30                 "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
31                 "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
32                 "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
33                 "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
34                 "</deleteVfModuleResponse>" + EOL;\r
35                         \r
36         private final String vnfAdapterDeleteCallbackFail = \r
37                         "<vfModuleException>" + EOL +\r
38                         "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +\r
39                         "    <category>INTERNAL</category>" + EOL +\r
40                         "    <rolledBack>false</rolledBack>" + EOL +\r
41                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
42                         "</vfModuleException>" + EOL;\r
43                                 \r
44         private final String sdncAdapterDeleteCallback =\r
45                 "<output xmlns=\"com:att:sdnctl:l3api\">" + EOL +\r
46                 "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
47                 "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
48                 "</output>" + EOL;\r
49         \r
50         public DoDeleteVfModuleFromVnfTest() throws IOException {\r
51                 callbacks.put("deactivate", sdncAdapterDeleteCallback);\r
52                 callbacks.put("unassign", sdncAdapterDeleteCallback);\r
53                 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
54                 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);\r
55         }\r
56         \r
57         private final String wfeString = "WorkflowException";\r
58 \r
59         @Test\r
60         @Deployment(resources = {\r
61                         "subprocess/DoDeleteVfModuleFromVnf.bpmn",                      \r
62                         "subprocess/SDNCAdapterV1.bpmn",\r
63                         "subprocess/VnfAdapterRestV1.bpmn",\r
64                         "subprocess/DeleteAAIVfModule.bpmn"\r
65                 })\r
66         public void  TestDoDeleteVfModuleFromVnfSuccess() {\r
67                 // delete the Base Module and Generic Vnf\r
68                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
69                 String request =\r
70                         "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL +\r
71                         "  <request-info>" + EOL +\r
72                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
73                         "    <source>PORTAL</source>" + EOL +\r
74                         "  </request-info>" + EOL +\r
75                         "  <vnf-inputs>" + EOL +\r
76                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
77                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
78                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
79                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
80                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
81                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
82                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
83                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
84                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
85                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
86                         "  </vnf-inputs>" + EOL +\r
87                         "  <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL +\r
88                         "</vnf-request>" + EOL;\r
89                 logStart();\r
90                 MockDoDeleteVfModule_SDNCSuccess();\r
91                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
92                 MockAAIGenericVnfSearch();      \r
93                 MockAAIDeleteVfModule();\r
94                 \r
95                 String businessKey = UUID.randomUUID().toString();\r
96                 Map<String, Object> variables = new HashMap<String, Object>();          \r
97                 variables.put("isDebugLogEnabled","true");\r
98                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
99                 variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
100                 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
101                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
102                 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
103                 variables.put("lcpCloudRegionId", "RDM2WAGPLCP");\r
104                 variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");\r
105                 variables.put("sdncVersion", "1707");\r
106                 \r
107                 invokeSubProcess("DoDeleteVfModuleFromVnf", businessKey, variables);\r
108 \r
109                 injectSDNCCallbacks(callbacks, "deactivate");\r
110                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
111                 //waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
112                 injectSDNCCallbacks(callbacks, "unassign");\r
113 \r
114                 waitForProcessEnd(businessKey, 10000);\r
115                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
116                 checkVariable(businessKey, wfeString, null);\r
117                 if (wfe != null) {\r
118                         System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +\r
119                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
120                 }\r
121                 logEnd();\r
122         }\r
123 \r
124         \r
125         // start of mocks used locally and by other VF Module unit tests\r
126         \r
127 \r
128         \r
129         public static void MockDoDeleteVfModule_SDNCSuccess() {\r
130                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
131                                   .withRequestBody(containing("SvcAction>deactivate"))\r
132                                   .willReturn(aResponse()\r
133                                   .withStatus(200)\r
134                                   .withHeader("Content-Type", "text/xml")\r
135                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
136                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
137                                   .withRequestBody(containing("SvcAction>unassign"))\r
138                                   .willReturn(aResponse()\r
139                                   .withStatus(200)\r
140                                   .withHeader("Content-Type", "text/xml")\r
141                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
142         }\r
143 \r
144         \r
145         public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
146                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
147                                 .willReturn(aResponse()\r
148                                 .withStatus(202)\r
149                                 .withHeader("Content-Type", "application/xml")));\r
150                 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
151                                 .willReturn(aResponse()\r
152                                 .withStatus(202)\r
153                                 .withHeader("Content-Type", "application/xml")));\r
154         }\r
155 \r
156         \r
157 }