AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoDeleteVfModuleTest.java
1 /*- \r
2  * ============LICENSE_START======================================================= \r
3  * ONAP - SO \r
4  * ================================================================================ \r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. \r
6  * ================================================================================ \r
7  * Licensed under the Apache License, Version 2.0 (the "License"); \r
8  * you may not use this file except in compliance with the License. \r
9  * You may obtain a copy of the License at \r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0 \r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software \r
14  * distributed under the License is distributed on an "AS IS" BASIS, \r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
16  * See the License for the specific language governing permissions and \r
17  * limitations under the License. \r
18  * ============LICENSE_END========================================================= \r
19  */ \r
20 \r
21 package org.openecomp.mso.bpmn.infrastructure;\r
22 \r
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;\r
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;\r
25 import static com.github.tomakehurst.wiremock.client.WireMock.delete;\r
26 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.put;\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
31 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteGenericVnf;\r
32 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;\r
33 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
35 \r
36 import java.io.IOException;\r
37 import java.util.HashMap;\r
38 import java.util.Map;\r
39 import java.util.UUID;\r
40 \r
41 import org.camunda.bpm.engine.test.Deployment;\r
42 import org.junit.Assert;\r
43 import org.junit.Test;\r
44 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
45 import org.openecomp.mso.bpmn.core.WorkflowException;\r
46 import org.openecomp.mso.bpmn.mock.FileUtil;\r
47 \r
48 /**\r
49  * Unit test for DoDeleteVfModule.bpmn.\r
50  */\r
51 public class DoDeleteVfModuleTest extends WorkflowTest {\r
52         private final CallbackSet callbacks = new CallbackSet();\r
53         \r
54         private static final String EOL = "\n";\r
55 \r
56         private final String vnfAdapterDeleteCallback = \r
57                 "<deleteVfModuleResponse>" + EOL +\r
58                 "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
59                 "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
60                 "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
61                 "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
62                 "</deleteVfModuleResponse>" + EOL;\r
63                         \r
64         private final String vnfAdapterDeleteCallbackFail = \r
65                         "<vfModuleException>" + EOL +\r
66                         "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +\r
67                         "    <category>INTERNAL</category>" + EOL +\r
68                         "    <rolledBack>false</rolledBack>" + EOL +\r
69                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
70                         "</vfModuleException>" + EOL;\r
71                                 \r
72         private final String sdncAdapterDeleteCallback =\r
73                 "<output xmlns=\"org:onap:sdnctl:l3api\">" + EOL +\r
74                 "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
75                 "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
76                 "</output>" + EOL;\r
77         \r
78         public DoDeleteVfModuleTest() throws IOException {\r
79                 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);\r
80                 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);\r
81                 callbacks.put("vnfDelete", FileUtil.readResourceFile(\r
82                                 "__files/DeleteVfModuleCallbackResponse.xml"));\r
83                 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);\r
84         }\r
85         \r
86         private final String wfeString = "WorkflowException";\r
87 \r
88         @Test\r
89         @Deployment(resources = {\r
90                         "subprocess/DoDeleteVfModule.bpmn",\r
91                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
92                         "subprocess/UpdateAAIVfModule.bpmn",\r
93                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
94                         "subprocess/DeleteAAIVfModule.bpmn",\r
95                         "subprocess/SDNCAdapterV1.bpmn",\r
96                         "subprocess/VnfAdapterRestV1.bpmn"\r
97                 })\r
98         public void  TestDoDeleteVfModuleSuccess() {\r
99                 // delete the Base Module and Generic Vnf\r
100                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
101                 String request =\r
102                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
103                         "  <request-info>" + EOL +\r
104                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
105                         "    <source>PORTAL</source>" + EOL +\r
106                         "  </request-info>" + EOL +\r
107                         "  <vnf-inputs>" + EOL +\r
108                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
109                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
110                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
111                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
112                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
113                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
114                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
115                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
116                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
117                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
118                         "  </vnf-inputs>" + EOL +\r
119                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
120                         "</vnf-request>" + EOL;\r
121                 logStart();\r
122                 MockDoDeleteVfModule_SDNCSuccess();\r
123                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
124                 MockAAIGenericVnfSearch();\r
125                 MockAAIVfModulePUT(false);\r
126                 MockAAIDeleteGenericVnf();\r
127                 MockAAIDeleteVfModule();\r
128                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
129                 \r
130                 String businessKey = UUID.randomUUID().toString();\r
131                 Map<String, Object> variables = new HashMap<>();                \r
132                 variables.put("isDebugLogEnabled","true");\r
133                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
134                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
135                 variables.put("DoDeleteVfModuleRequest",request);\r
136                 variables.put("isVidRequest", "true");\r
137                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
138 \r
139                 // "changedelete" operation not required for deleting a Vf Module\r
140 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
141                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
142                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
143                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
144 \r
145                 waitForProcessEnd(businessKey, 10000);\r
146                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
147                 checkVariable(businessKey, wfeString, null);\r
148                 if (wfe != null) {\r
149                         System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +\r
150                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
151                 }\r
152                 logEnd();\r
153         }\r
154 \r
155         @Test\r
156         @Deployment(resources = {\r
157                         "subprocess/DoDeleteVfModule.bpmn",\r
158                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
159                         "subprocess/UpdateAAIVfModule.bpmn",\r
160                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
161                         "subprocess/DeleteAAIVfModule.bpmn",\r
162                         "subprocess/SDNCAdapterV1.bpmn",\r
163                         "subprocess/VnfAdapterRestV1.bpmn"\r
164                 })\r
165         public void  TestDoDeleteVfModule_Building_Block_Success() {\r
166                 logStart();\r
167                 MockDoDeleteVfModule_SDNCSuccess();\r
168                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
169                 MockAAIGenericVnfSearch();\r
170                 MockAAIVfModulePUT(false);\r
171                 MockAAIDeleteGenericVnf();\r
172                 MockAAIDeleteVfModule();\r
173                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
174                 \r
175                 String businessKey = UUID.randomUUID().toString();\r
176                 Map<String, Object> variables = new HashMap<>();                \r
177                 \r
178                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");        \r
179                 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");             \r
180                 variables.put("isDebugLogEnabled","true");\r
181                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
182                 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
183                 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
184                 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");\r
185                 variables.put("sdncVersion", "1610");\r
186                 variables.put("isVidRequest", "true");\r
187                 variables.put("retainResources", false);\r
188                 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
189                                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + \r
190                                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
191                                 "\"modelName\": \"vSAMP12\"," +\r
192                                 "\"modelVersion\": \"1.0\"," + \r
193                                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," + \r
194                                 "}";\r
195                 variables.put("vfModuleModelInfo", vfModuleModelInfo);\r
196                         \r
197                 String cloudConfiguration = "{" + \r
198                                 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +              \r
199                                 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";\r
200                 variables.put("cloudConfiguration", cloudConfiguration);\r
201         \r
202                 \r
203                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
204 \r
205                 // "changedelete" operation not required for deleting a Vf Module\r
206 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
207                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
208                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
209                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
210 \r
211                 waitForProcessEnd(businessKey, 10000);\r
212                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
213                 checkVariable(businessKey, wfeString, null);\r
214                 if (wfe != null) {\r
215                         System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +\r
216                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
217                 }\r
218                 logEnd();\r
219         }\r
220         \r
221         @Test\r
222         @Deployment(resources = {\r
223                         "subprocess/DoDeleteVfModule.bpmn",\r
224                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
225                         "subprocess/UpdateAAIVfModule.bpmn",\r
226                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
227                         "subprocess/DeleteAAIVfModule.bpmn",\r
228                         "subprocess/SDNCAdapterV1.bpmn",\r
229                         "subprocess/VnfAdapterRestV1.bpmn"\r
230                 })\r
231         public void  TestDoDeleteVfModule_Building_Block_ModuleInAssignedState() {\r
232                 logStart();\r
233                 MockDoDeleteVfModule_SDNCSuccess();\r
234                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
235                 MockAAIGenericVnfSearch();\r
236                 MockAAIVfModulePUT(false);\r
237                 MockAAIDeleteGenericVnf();\r
238                 MockAAIDeleteVfModule();\r
239                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
240                 \r
241                 String businessKey = UUID.randomUUID().toString();\r
242                 Map<String, Object> variables = new HashMap<>();                \r
243                 \r
244                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");        \r
245                 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");             \r
246                 variables.put("isDebugLogEnabled","true");\r
247                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
248                 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
249                 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
250                 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");\r
251                 variables.put("sdncVersion", "1610");\r
252                 variables.put("isVidRequest", "true");\r
253                 variables.put("retainResources", false);\r
254                 variables.put("aLaCarte", true);\r
255                 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
256                                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + \r
257                                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
258                                 "\"modelName\": \"vSAMP12\"," +\r
259                                 "\"modelVersion\": \"1.0\"," + \r
260                                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," + \r
261                                 "}";\r
262                 variables.put("vfModuleModelInfo", vfModuleModelInfo);\r
263                         \r
264                 String cloudConfiguration = "{" + \r
265                                 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +              \r
266                                 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";\r
267                 variables.put("cloudConfiguration", cloudConfiguration);\r
268         \r
269                 \r
270                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
271 \r
272                 // "changedelete" operation not required for deleting a Vf Module\r
273 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
274                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
275                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
276                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
277 \r
278                 waitForProcessEnd(businessKey, 10000);\r
279                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
280                 checkVariable(businessKey, wfeString, null);\r
281                 if (wfe != null) {\r
282                         System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +\r
283                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
284                 }\r
285                 logEnd();\r
286         }\r
287 \r
288         \r
289         @Test\r
290         @Deployment(resources = {\r
291                         "subprocess/DoDeleteVfModule.bpmn",\r
292                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
293                         "subprocess/UpdateAAIVfModule.bpmn",\r
294                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
295                         "subprocess/DeleteAAIVfModule.bpmn",\r
296                         "subprocess/SDNCAdapterV1.bpmn",\r
297                         "subprocess/VnfAdapterRestV1.bpmn"\r
298                 })\r
299         public void  TestDoDeleteVfModuleSDNCFailure() {\r
300                 // delete the Base Module and Generic Vnf - SDNCAdapter failure\r
301                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
302                 String request =\r
303                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
304                         "  <request-info>" + EOL +\r
305                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
306                         "    <source>PORTAL</source>" + EOL +\r
307                         "  </request-info>" + EOL +\r
308                         "  <vnf-inputs>" + EOL +\r
309                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
310                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
311                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
312                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
313                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
314                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
315                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
316                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
317                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
318                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
319                         "  </vnf-inputs>" + EOL +\r
320                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
321                         "</vnf-request>" + EOL;\r
322 \r
323                 logStart();\r
324                 MockDoDeleteVfModule_SDNCFailure();\r
325                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
326                 MockAAIGenericVnfSearch();\r
327                 MockAAIVfModulePUT(false);\r
328                 MockAAIDeleteGenericVnf();\r
329                 MockAAIDeleteVfModule();\r
330                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
331                 \r
332                 String businessKey = UUID.randomUUID().toString();\r
333                 Map<String, Object> variables = new HashMap<>();                \r
334                 variables.put("isDebugLogEnabled","true");\r
335                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
336                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
337                 variables.put("DoDeleteVfModuleRequest", request);\r
338                 variables.put("isVidRequest", "true");\r
339                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
340 \r
341                 // "changedelete" operation not required for deleting a Vf Module\r
342 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
343                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
344                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
345                 // cause a failure by not injecting a callback\r
346 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
347 \r
348                 waitForProcessEnd(businessKey, 10000);\r
349                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
350                 Assert.assertNotNull(wfe);\r
351                 if (wfe != null) {\r
352                         System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +\r
353                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
354                         Assert.assertTrue(wfe.getErrorCode() == 7000);\r
355                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));\r
356                 }\r
357                 logEnd();\r
358         }\r
359 \r
360         @Test\r
361         @Deployment(resources = {\r
362                         "subprocess/DoDeleteVfModule.bpmn",\r
363                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
364                         "subprocess/UpdateAAIVfModule.bpmn",\r
365                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
366                         "subprocess/DeleteAAIVfModule.bpmn",\r
367                         "subprocess/SDNCAdapterV1.bpmn",\r
368                         "subprocess/VnfAdapterRestV1.bpmn"\r
369                 })\r
370         public void  TestDoDeleteVfModuleSDNCCallbackFailure() {\r
371                 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure\r
372                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
373                 String request =\r
374                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
375                         "  <request-info>" + EOL +\r
376                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
377                         "    <source>PORTAL</source>" + EOL +\r
378                         "  </request-info>" + EOL +\r
379                         "  <vnf-inputs>" + EOL +\r
380                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
381                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
382                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
383                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
384                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
385                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
386                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
387                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
388                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
389                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
390                         "  </vnf-inputs>" + EOL +\r
391                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
392                         "</vnf-request>" + EOL;\r
393 \r
394                 logStart();\r
395                 MockDoDeleteVfModule_SDNCSuccess();\r
396                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
397                 MockAAIGenericVnfSearch();\r
398                 MockAAIVfModulePUT(false);\r
399                 MockAAIDeleteGenericVnf();\r
400                 MockAAIDeleteVfModule();\r
401                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
402                 \r
403                 String businessKey = UUID.randomUUID().toString();\r
404                 Map<String, Object> variables = new HashMap<>();                \r
405                 variables.put("isDebugLogEnabled","true");\r
406                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
407                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
408                 variables.put("DoDeleteVfModuleRequest",request);\r
409                 variables.put("isVidRequest", "true");\r
410                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
411 \r
412                 // "changedelete" operation not required for deleting a Vf Module\r
413 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");\r
414                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
415                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
416                 // return a failure in the callback\r
417                 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");\r
418 \r
419                 waitForProcessEnd(businessKey, 10000);\r
420                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
421                 Assert.assertNotNull(wfe);\r
422                 if (wfe != null) {\r
423                         System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
424                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
425                         Assert.assertTrue(wfe.getErrorCode() == 5310);\r
426                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));\r
427                 }\r
428                 logEnd();\r
429         }\r
430 \r
431         @Test\r
432         @Deployment(resources = {\r
433                         "subprocess/DoDeleteVfModule.bpmn",\r
434                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
435                         "subprocess/UpdateAAIVfModule.bpmn",\r
436                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
437                         "subprocess/DeleteAAIVfModule.bpmn",\r
438                         "subprocess/SDNCAdapterV1.bpmn",\r
439                         "subprocess/VnfAdapterRestV1.bpmn"\r
440                 })\r
441         public void  TestDoDeleteVfModuleVNFFailure() {\r
442                 // delete the Base Module and Generic Vnf - VNFAdapter failure\r
443                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
444                 String request =\r
445                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
446                         "  <request-info>" + EOL +\r
447                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
448                         "    <source>PORTAL</source>" + EOL +\r
449                         "  </request-info>" + EOL +\r
450                         "  <vnf-inputs>" + EOL +\r
451                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
452                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
453                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
454                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
455                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
456                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
457                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
458                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
459                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
460                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
461                         "  </vnf-inputs>" + EOL +\r
462                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
463                         "</vnf-request>" + EOL;\r
464 \r
465                 logStart();\r
466                 MockDoDeleteVfModule_SDNCSuccess();\r
467                 MockDoDeleteVfModule_DeleteVNFFailure();\r
468                 MockAAIGenericVnfSearch();\r
469                 MockAAIVfModulePUT(false);\r
470                 MockAAIDeleteGenericVnf();\r
471                 MockAAIDeleteVfModule();\r
472                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
473                 \r
474                 String businessKey = UUID.randomUUID().toString();\r
475                 Map<String, Object> variables = new HashMap<>();                \r
476                 variables.put("isDebugLogEnabled","true");\r
477                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
478                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
479                 variables.put("DoDeleteVfModuleRequest",request);\r
480                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
481 \r
482                 // "changedelete" operation not required for deleting a Vf Module\r
483 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
484                 // cause a failure by not injecting a callback\r
485 //              injectVNFRestCallbacks(callbacks, "vnfDelete");\r
486 //              waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
487 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
488 \r
489                 waitForProcessEnd(businessKey, 10000);\r
490                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
491                 Assert.assertNotNull(wfe);\r
492                 if (wfe != null) {\r
493                         System.out.println("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +\r
494                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
495                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
496                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));\r
497                 }\r
498                 logEnd();\r
499         }\r
500 \r
501         @Test\r
502         @Deployment(resources = {\r
503                         "subprocess/DoDeleteVfModule.bpmn",\r
504                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
505                         "subprocess/UpdateAAIVfModule.bpmn",\r
506                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
507                         "subprocess/DeleteAAIVfModule.bpmn",\r
508                         "subprocess/SDNCAdapterV1.bpmn",\r
509                         "subprocess/VnfAdapterRestV1.bpmn"\r
510                 })\r
511         public void  TestDoDeleteVfModuleVNFCallbackFailure() {\r
512                 // delete the Base Module and Generic Vnf - VNFAdapter Callback failure\r
513                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
514                 String request =\r
515                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
516                         "  <request-info>" + EOL +\r
517                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
518                         "    <source>PORTAL</source>" + EOL +\r
519                         "  </request-info>" + EOL +\r
520                         "  <vnf-inputs>" + EOL +\r
521                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
522                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
523                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
524                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
525                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
526                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
527                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
528                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
529                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
530                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
531                         "  </vnf-inputs>" + EOL +\r
532                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
533                         "</vnf-request>" + EOL;\r
534 \r
535                 logStart();\r
536                 MockDoDeleteVfModule_SDNCSuccess();\r
537                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
538                 MockAAIGenericVnfSearch();\r
539                 MockAAIVfModulePUT(false);\r
540                 MockAAIDeleteGenericVnf();\r
541                 MockAAIDeleteVfModule();\r
542                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
543                 \r
544                 String businessKey = UUID.randomUUID().toString();\r
545                 Map<String, Object> variables = new HashMap<>();                \r
546                 variables.put("isDebugLogEnabled","true");\r
547                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
548                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
549                 variables.put("DoDeleteVfModuleRequest",request);\r
550                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
551 \r
552                 // "changedelete" operation not required for deleting a Vf Module\r
553 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
554                 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");\r
555                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
556 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
557 \r
558                 waitForProcessEnd(businessKey, 10000);\r
559                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
560                 Assert.assertNotNull(wfe);\r
561                 if (wfe != null) {\r
562                         System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
563                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
564                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
565                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));\r
566                 }\r
567                 logEnd();\r
568         }\r
569 \r
570         // start of mocks used locally and by other VF Module unit tests\r
571         public static void MockAAIVfModulePUT(boolean isCreate){\r
572                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
573                                 .withRequestBody(containing("MMSC"))\r
574                                 .willReturn(aResponse()\r
575                                                 .withStatus(isCreate ? 201 : 200)));\r
576                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
577                                 .withRequestBody(containing("PCRF"))\r
578                                 .willReturn(aResponse()\r
579                                                 .withStatus(500)\r
580                                                 .withHeader("Content-Type", "text/xml")\r
581                                                 .withBodyFile("aaiFault.xml")));\r
582                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))                          \r
583                                 .willReturn(aResponse()\r
584                                         .withStatus(200)));\r
585         }\r
586 \r
587         public static void MockDoDeleteVfModule_SDNCSuccess() {\r
588                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
589                                   .withRequestBody(containing("SvcAction>changedelete"))\r
590                                   .willReturn(aResponse()\r
591                                   .withStatus(200)\r
592                                   .withHeader("Content-Type", "text/xml")\r
593                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
594                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
595                                   .withRequestBody(containing("SvcAction>delete"))\r
596                                   .willReturn(aResponse()\r
597                                   .withStatus(200)\r
598                                   .withHeader("Content-Type", "text/xml")\r
599                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
600         }\r
601 \r
602         public static void MockDoDeleteVfModule_SDNCFailure() {\r
603                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
604                                   .withRequestBody(containing("SvcAction>changedelete"))\r
605                                   .willReturn(aResponse()\r
606                                   .withStatus(500)));\r
607                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
608                                   .withRequestBody(containing("SvcAction>delete"))\r
609                                   .willReturn(aResponse()\r
610                                   .withStatus(500)));\r
611         }\r
612 \r
613         public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
614                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
615                                 .willReturn(aResponse()\r
616                                 .withStatus(202)\r
617                                 .withHeader("Content-Type", "application/xml")));\r
618                 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
619                                 .willReturn(aResponse()\r
620                                 .withStatus(202)\r
621                                 .withHeader("Content-Type", "application/xml")));\r
622         }\r
623 \r
624         public static void MockDoDeleteVfModule_DeleteVNFFailure() {\r
625                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
626                                 .willReturn(aResponse()\r
627                                 .withStatus(500)\r
628                                 .withHeader("Content-Type", "application/xml")));\r
629         }\r
630 }\r
631 \r