3e1c498c5844676a79f7fa32f4be76c15dfe3dae
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoDeleteVfModuleTest.java
1 /*- \r
2  * ============LICENSE_START======================================================= \r
3  * OPENECOMP - MSO \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:openecomp: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<String, Object>();          \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<String, Object>();          \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         \r
222         @Test\r
223         @Deployment(resources = {\r
224                         "subprocess/DoDeleteVfModule.bpmn",\r
225                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
226                         "subprocess/UpdateAAIVfModule.bpmn",\r
227                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
228                         "subprocess/DeleteAAIVfModule.bpmn",\r
229                         "subprocess/SDNCAdapterV1.bpmn",\r
230                         "subprocess/VnfAdapterRestV1.bpmn"\r
231                 })\r
232         public void  TestDoDeleteVfModuleSDNCFailure() {\r
233                 // delete the Base Module and Generic Vnf - SDNCAdapter failure\r
234                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
235                 String request =\r
236                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
237                         "  <request-info>" + EOL +\r
238                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
239                         "    <source>PORTAL</source>" + EOL +\r
240                         "  </request-info>" + EOL +\r
241                         "  <vnf-inputs>" + EOL +\r
242                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
243                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
244                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
245                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
246                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
247                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
248                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
249                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
250                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
251                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
252                         "  </vnf-inputs>" + EOL +\r
253                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
254                         "</vnf-request>" + EOL;\r
255 \r
256                 logStart();\r
257                 MockDoDeleteVfModule_SDNCFailure();\r
258                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
259                 MockAAIGenericVnfSearch();\r
260                 MockAAIVfModulePUT(false);\r
261                 MockAAIDeleteGenericVnf();\r
262                 MockAAIDeleteVfModule();\r
263                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
264                 \r
265                 String businessKey = UUID.randomUUID().toString();\r
266                 Map<String, Object> variables = new HashMap<String, Object>();          \r
267                 variables.put("isDebugLogEnabled","true");\r
268                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
269                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
270                 variables.put("DoDeleteVfModuleRequest", request);\r
271                 variables.put("isVidRequest", "true");\r
272                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
273 \r
274                 // "changedelete" operation not required for deleting a Vf Module\r
275 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
276                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
277                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
278                 // cause a failure by not injecting a callback\r
279 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
280 \r
281                 waitForProcessEnd(businessKey, 10000);\r
282                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
283                 Assert.assertNotNull(wfe);\r
284                 if (wfe != null) {\r
285                         System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +\r
286                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
287                         Assert.assertTrue(wfe.getErrorCode() == 7000);\r
288                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));\r
289                 }\r
290                 logEnd();\r
291         }\r
292 \r
293         @Test\r
294         @Deployment(resources = {\r
295                         "subprocess/DoDeleteVfModule.bpmn",\r
296                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
297                         "subprocess/UpdateAAIVfModule.bpmn",\r
298                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
299                         "subprocess/DeleteAAIVfModule.bpmn",\r
300                         "subprocess/SDNCAdapterV1.bpmn",\r
301                         "subprocess/VnfAdapterRestV1.bpmn"\r
302                 })\r
303         public void  TestDoDeleteVfModuleSDNCCallbackFailure() {\r
304                 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure\r
305                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
306                 String request =\r
307                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
308                         "  <request-info>" + EOL +\r
309                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
310                         "    <source>PORTAL</source>" + EOL +\r
311                         "  </request-info>" + EOL +\r
312                         "  <vnf-inputs>" + EOL +\r
313                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
314                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
315                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
316                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
317                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
318                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
319                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
320                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
321                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
322                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
323                         "  </vnf-inputs>" + EOL +\r
324                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
325                         "</vnf-request>" + EOL;\r
326 \r
327                 logStart();\r
328                 MockDoDeleteVfModule_SDNCSuccess();\r
329                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
330                 MockAAIGenericVnfSearch();\r
331                 MockAAIVfModulePUT(false);\r
332                 MockAAIDeleteGenericVnf();\r
333                 MockAAIDeleteVfModule();\r
334                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
335                 \r
336                 String businessKey = UUID.randomUUID().toString();\r
337                 Map<String, Object> variables = new HashMap<String, Object>();          \r
338                 variables.put("isDebugLogEnabled","true");\r
339                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
340                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
341                 variables.put("DoDeleteVfModuleRequest",request);\r
342                 variables.put("isVidRequest", "true");\r
343                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
344 \r
345                 // "changedelete" operation not required for deleting a Vf Module\r
346 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");\r
347                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
348                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
349                 // return a failure in the callback\r
350                 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");\r
351 \r
352                 waitForProcessEnd(businessKey, 10000);\r
353                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
354                 Assert.assertNotNull(wfe);\r
355                 if (wfe != null) {\r
356                         System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
357                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
358                         Assert.assertTrue(wfe.getErrorCode() == 5310);\r
359                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));\r
360                 }\r
361                 logEnd();\r
362         }\r
363 \r
364         @Test\r
365         @Deployment(resources = {\r
366                         "subprocess/DoDeleteVfModule.bpmn",\r
367                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
368                         "subprocess/UpdateAAIVfModule.bpmn",\r
369                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
370                         "subprocess/DeleteAAIVfModule.bpmn",\r
371                         "subprocess/SDNCAdapterV1.bpmn",\r
372                         "subprocess/VnfAdapterRestV1.bpmn"\r
373                 })\r
374         public void  TestDoDeleteVfModuleVNFFailure() {\r
375                 // delete the Base Module and Generic Vnf - VNFAdapter failure\r
376                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
377                 String request =\r
378                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
379                         "  <request-info>" + EOL +\r
380                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
381                         "    <source>PORTAL</source>" + EOL +\r
382                         "  </request-info>" + EOL +\r
383                         "  <vnf-inputs>" + EOL +\r
384                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
385                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
386                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
387                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
388                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
389                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
390                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
391                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
392                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
393                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
394                         "  </vnf-inputs>" + EOL +\r
395                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
396                         "</vnf-request>" + EOL;\r
397 \r
398                 logStart();\r
399                 MockDoDeleteVfModule_SDNCSuccess();\r
400                 MockDoDeleteVfModule_DeleteVNFFailure();\r
401                 MockAAIGenericVnfSearch();\r
402                 MockAAIVfModulePUT(false);\r
403                 MockAAIDeleteGenericVnf();\r
404                 MockAAIDeleteVfModule();\r
405                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
406                 \r
407                 String businessKey = UUID.randomUUID().toString();\r
408                 Map<String, Object> variables = new HashMap<String, Object>();          \r
409                 variables.put("isDebugLogEnabled","true");\r
410                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
411                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
412                 variables.put("DoDeleteVfModuleRequest",request);\r
413                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
414 \r
415                 // "changedelete" operation not required for deleting a Vf Module\r
416 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
417                 // cause a failure by not injecting a callback\r
418 //              injectVNFRestCallbacks(callbacks, "vnfDelete");\r
419 //              waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
420 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
421 \r
422                 waitForProcessEnd(businessKey, 10000);\r
423                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
424                 Assert.assertNotNull(wfe);\r
425                 if (wfe != null) {\r
426                         System.out.println("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +\r
427                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
428                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
429                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));\r
430                 }\r
431                 logEnd();\r
432         }\r
433 \r
434         @Test\r
435         @Deployment(resources = {\r
436                         "subprocess/DoDeleteVfModule.bpmn",\r
437                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
438                         "subprocess/UpdateAAIVfModule.bpmn",\r
439                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
440                         "subprocess/DeleteAAIVfModule.bpmn",\r
441                         "subprocess/SDNCAdapterV1.bpmn",\r
442                         "subprocess/VnfAdapterRestV1.bpmn"\r
443                 })\r
444         public void  TestDoDeleteVfModuleVNFCallbackFailure() {\r
445                 // delete the Base Module and Generic Vnf - VNFAdapter Callback failure\r
446                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
447                 String request =\r
448                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
449                         "  <request-info>" + EOL +\r
450                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
451                         "    <source>PORTAL</source>" + EOL +\r
452                         "  </request-info>" + EOL +\r
453                         "  <vnf-inputs>" + EOL +\r
454                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
455                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
456                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
457                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
458                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
459                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
460                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
461                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
462                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
463                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
464                         "  </vnf-inputs>" + EOL +\r
465                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
466                         "</vnf-request>" + EOL;\r
467 \r
468                 logStart();\r
469                 MockDoDeleteVfModule_SDNCSuccess();\r
470                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
471                 MockAAIGenericVnfSearch();\r
472                 MockAAIVfModulePUT(false);\r
473                 MockAAIDeleteGenericVnf();\r
474                 MockAAIDeleteVfModule();\r
475                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
476                 \r
477                 String businessKey = UUID.randomUUID().toString();\r
478                 Map<String, Object> variables = new HashMap<String, Object>();          \r
479                 variables.put("isDebugLogEnabled","true");\r
480                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
481                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
482                 variables.put("DoDeleteVfModuleRequest",request);\r
483                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
484 \r
485                 // "changedelete" operation not required for deleting a Vf Module\r
486 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
487                 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");\r
488                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
489 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
490 \r
491                 waitForProcessEnd(businessKey, 10000);\r
492                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
493                 Assert.assertNotNull(wfe);\r
494                 if (wfe != null) {\r
495                         System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
496                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
497                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
498                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));\r
499                 }\r
500                 logEnd();\r
501         }\r
502 \r
503         // start of mocks used locally and by other VF Module unit tests\r
504         public static void MockAAIVfModulePUT(boolean isCreate){\r
505                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
506                                 .withRequestBody(containing("MMSC"))\r
507                                 .willReturn(aResponse()\r
508                                                 .withStatus(isCreate ? 201 : 200)));\r
509                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
510                                 .withRequestBody(containing("PCRF"))\r
511                                 .willReturn(aResponse()\r
512                                                 .withStatus(500)\r
513                                                 .withHeader("Content-Type", "text/xml")\r
514                                                 .withBodyFile("aaiFault.xml")));\r
515                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))                          \r
516                                 .willReturn(aResponse()\r
517                                         .withStatus(200)));\r
518         }\r
519 \r
520         public static void MockDoDeleteVfModule_SDNCSuccess() {\r
521                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
522                                   .withRequestBody(containing("SvcAction>changedelete"))\r
523                                   .willReturn(aResponse()\r
524                                   .withStatus(200)\r
525                                   .withHeader("Content-Type", "text/xml")\r
526                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
527                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
528                                   .withRequestBody(containing("SvcAction>delete"))\r
529                                   .willReturn(aResponse()\r
530                                   .withStatus(200)\r
531                                   .withHeader("Content-Type", "text/xml")\r
532                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
533         }\r
534 \r
535         public static void MockDoDeleteVfModule_SDNCFailure() {\r
536                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
537                                   .withRequestBody(containing("SvcAction>changedelete"))\r
538                                   .willReturn(aResponse()\r
539                                   .withStatus(500)));\r
540                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
541                                   .withRequestBody(containing("SvcAction>delete"))\r
542                                   .willReturn(aResponse()\r
543                                   .withStatus(500)));\r
544         }\r
545 \r
546         public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
547                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
548                                 .willReturn(aResponse()\r
549                                 .withStatus(202)\r
550                                 .withHeader("Content-Type", "application/xml")));\r
551                 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
552                                 .willReturn(aResponse()\r
553                                 .withStatus(202)\r
554                                 .withHeader("Content-Type", "application/xml")));\r
555         }\r
556 \r
557         public static void MockDoDeleteVfModule_DeleteVNFFailure() {\r
558                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
559                                 .willReturn(aResponse()\r
560                                 .withStatus(500)\r
561                                 .withHeader("Content-Type", "application/xml")));\r
562         }\r
563 }\r
564 \r