a3165f7ff35993e032df3de8fe4874f5a9d34733
[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 \r
47 /**\r
48  * Unit test for DoDeleteVfModule.bpmn.\r
49  */\r
50 public class DoDeleteVfModuleTest extends WorkflowTest {\r
51         private final CallbackSet callbacks = new CallbackSet();\r
52         \r
53         private static final String EOL = "\n";\r
54 \r
55         private final String vnfAdapterDeleteCallback = \r
56                 "<deleteVfModuleResponse>" + EOL +\r
57                 "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
58                 "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
59                 "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
60                 "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
61                 "</deleteVfModuleResponse>" + EOL;\r
62                         \r
63         private final String vnfAdapterDeleteCallbackFail = \r
64                         "<vfModuleException>" + EOL +\r
65                         "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +\r
66                         "    <category>INTERNAL</category>" + EOL +\r
67                         "    <rolledBack>false</rolledBack>" + EOL +\r
68                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
69                         "</vfModuleException>" + EOL;\r
70                                 \r
71         private final String sdncAdapterDeleteCallback =\r
72                 "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +\r
73                 "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
74                 "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
75                 "</output>" + EOL;\r
76         \r
77         public DoDeleteVfModuleTest() throws IOException {\r
78                 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);\r
79                 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);\r
80                 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
81                 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);\r
82         }\r
83         \r
84         private final String wfeString = "WorkflowException";\r
85 \r
86         @Test\r
87         @Deployment(resources = {\r
88                         "subprocess/DoDeleteVfModule.bpmn",\r
89                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
90                         "subprocess/UpdateAAIVfModule.bpmn",\r
91                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
92                         "subprocess/DeleteAAIVfModule.bpmn",\r
93                         "subprocess/SDNCAdapterV1.bpmn",\r
94                         "subprocess/VnfAdapterRestV1.bpmn"\r
95                 })\r
96         public void  TestDoDeleteVfModuleSuccess() {\r
97                 // delete the Base Module and Generic Vnf\r
98                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
99                 String request =\r
100                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
101                         "  <request-info>" + EOL +\r
102                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
103                         "    <source>PORTAL</source>" + EOL +\r
104                         "  </request-info>" + EOL +\r
105                         "  <vnf-inputs>" + EOL +\r
106                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
107                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
108                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
109                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
110                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
111                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
112                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
113                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
114                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
115                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
116                         "  </vnf-inputs>" + EOL +\r
117                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
118                         "</vnf-request>" + EOL;\r
119                 logStart();\r
120                 MockDoDeleteVfModule_SDNCSuccess();\r
121                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
122                 MockAAIGenericVnfSearch();\r
123                 MockAAIVfModulePUT(false);\r
124                 MockAAIDeleteGenericVnf();\r
125                 MockAAIDeleteVfModule();\r
126                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
127                 \r
128                 String businessKey = UUID.randomUUID().toString();\r
129                 Map<String, Object> variables = new HashMap<String, Object>();          \r
130                 variables.put("isDebugLogEnabled","true");\r
131                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
132                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
133                 variables.put("DoDeleteVfModuleRequest",request);\r
134                 variables.put("isVidRequest", "true");\r
135                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
136 \r
137                 // "changedelete" operation not required for deleting a Vf Module\r
138 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
139                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
140                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
141                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
142 \r
143                 waitForProcessEnd(businessKey, 10000);\r
144                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
145                 checkVariable(businessKey, wfeString, null);\r
146                 if (wfe != null) {\r
147                         System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +\r
148                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
149                 }\r
150                 logEnd();\r
151         }\r
152 \r
153         @Test\r
154         @Deployment(resources = {\r
155                         "subprocess/DoDeleteVfModule.bpmn",\r
156                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
157                         "subprocess/UpdateAAIVfModule.bpmn",\r
158                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
159                         "subprocess/DeleteAAIVfModule.bpmn",\r
160                         "subprocess/SDNCAdapterV1.bpmn",\r
161                         "subprocess/VnfAdapterRestV1.bpmn"\r
162                 })\r
163         public void  TestDoDeleteVfModule_Building_Block_Success() {\r
164                 logStart();\r
165                 MockDoDeleteVfModule_SDNCSuccess();\r
166                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
167                 MockAAIGenericVnfSearch();\r
168                 MockAAIVfModulePUT(false);\r
169                 MockAAIDeleteGenericVnf();\r
170                 MockAAIDeleteVfModule();\r
171                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
172                 \r
173                 String businessKey = UUID.randomUUID().toString();\r
174                 Map<String, Object> variables = new HashMap<String, Object>();          \r
175                 \r
176                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");        \r
177                 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");             \r
178                 variables.put("isDebugLogEnabled","true");\r
179                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
180                 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
181                 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
182                 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");\r
183                 variables.put("sdncVersion", "1610");\r
184                 variables.put("isVidRequest", "true");\r
185                 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
186                                 "\"modelInvariantId\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + \r
187                                 "\"modelNameVersionId\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
188                                 "\"modelName\": \"vSAMP12\"," +\r
189                                 "\"modelVersion\": \"1.0\"," + \r
190                                 "\"modelCustomizationId\": \"MODEL-ID-1234\"," + \r
191                                 "}";\r
192                 variables.put("vfModuleModelInfo", vfModuleModelInfo);\r
193                         \r
194                 String cloudConfiguration = "{" + \r
195                                 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +              \r
196                                 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";\r
197                 variables.put("cloudConfiguration", cloudConfiguration);\r
198         \r
199                 \r
200                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
201 \r
202                 // "changedelete" operation not required for deleting a Vf Module\r
203 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
204                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
205                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
206                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
207 \r
208                 waitForProcessEnd(businessKey, 10000);\r
209                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
210                 checkVariable(businessKey, wfeString, null);\r
211                 if (wfe != null) {\r
212                         System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +\r
213                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
214                 }\r
215                 logEnd();\r
216         }\r
217 \r
218         \r
219         @Test\r
220         @Deployment(resources = {\r
221                         "subprocess/DoDeleteVfModule.bpmn",\r
222                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
223                         "subprocess/UpdateAAIVfModule.bpmn",\r
224                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
225                         "subprocess/DeleteAAIVfModule.bpmn",\r
226                         "subprocess/SDNCAdapterV1.bpmn",\r
227                         "subprocess/VnfAdapterRestV1.bpmn"\r
228                 })\r
229         public void  TestDoDeleteVfModuleSDNCFailure() {\r
230                 // delete the Base Module and Generic Vnf - SDNCAdapter failure\r
231                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
232                 String request =\r
233                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
234                         "  <request-info>" + EOL +\r
235                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
236                         "    <source>PORTAL</source>" + EOL +\r
237                         "  </request-info>" + EOL +\r
238                         "  <vnf-inputs>" + EOL +\r
239                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
240                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
241                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
242                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
243                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
244                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
245                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
246                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
247                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
248                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
249                         "  </vnf-inputs>" + EOL +\r
250                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
251                         "</vnf-request>" + EOL;\r
252 \r
253                 logStart();\r
254                 MockDoDeleteVfModule_SDNCFailure();\r
255                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
256                 MockAAIGenericVnfSearch();\r
257                 MockAAIVfModulePUT(false);\r
258                 MockAAIDeleteGenericVnf();\r
259                 MockAAIDeleteVfModule();\r
260                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
261                 \r
262                 String businessKey = UUID.randomUUID().toString();\r
263                 Map<String, Object> variables = new HashMap<String, Object>();          \r
264                 variables.put("isDebugLogEnabled","true");\r
265                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
266                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
267                 variables.put("DoDeleteVfModuleRequest", request);\r
268                 variables.put("isVidRequest", "true");\r
269                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
270 \r
271                 // "changedelete" operation not required for deleting a Vf Module\r
272 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
273                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
274                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
275                 // cause a failure by not injecting a callback\r
276 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
277 \r
278                 waitForProcessEnd(businessKey, 10000);\r
279                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
280                 Assert.assertNotNull(wfe);\r
281                 if (wfe != null) {\r
282                         System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +\r
283                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
284                         Assert.assertTrue(wfe.getErrorCode() == 7000);\r
285                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));\r
286                 }\r
287                 logEnd();\r
288         }\r
289 \r
290         @Test\r
291         @Deployment(resources = {\r
292                         "subprocess/DoDeleteVfModule.bpmn",\r
293                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
294                         "subprocess/UpdateAAIVfModule.bpmn",\r
295                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
296                         "subprocess/DeleteAAIVfModule.bpmn",\r
297                         "subprocess/SDNCAdapterV1.bpmn",\r
298                         "subprocess/VnfAdapterRestV1.bpmn"\r
299                 })\r
300         public void  TestDoDeleteVfModuleSDNCCallbackFailure() {\r
301                 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure\r
302                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
303                 String request =\r
304                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
305                         "  <request-info>" + EOL +\r
306                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
307                         "    <source>PORTAL</source>" + EOL +\r
308                         "  </request-info>" + EOL +\r
309                         "  <vnf-inputs>" + EOL +\r
310                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
311                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
312                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
313                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
314                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
315                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
316                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
317                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
318                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
319                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
320                         "  </vnf-inputs>" + EOL +\r
321                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
322                         "</vnf-request>" + EOL;\r
323 \r
324                 logStart();\r
325                 MockDoDeleteVfModule_SDNCSuccess();\r
326                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
327                 MockAAIGenericVnfSearch();\r
328                 MockAAIVfModulePUT(false);\r
329                 MockAAIDeleteGenericVnf();\r
330                 MockAAIDeleteVfModule();\r
331                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
332                 \r
333                 String businessKey = UUID.randomUUID().toString();\r
334                 Map<String, Object> variables = new HashMap<String, Object>();          \r
335                 variables.put("isDebugLogEnabled","true");\r
336                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
337                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
338                 variables.put("DoDeleteVfModuleRequest",request);\r
339                 variables.put("isVidRequest", "true");\r
340                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
341 \r
342                 // "changedelete" operation not required for deleting a Vf Module\r
343 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");\r
344                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
345                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
346                 // return a failure in the callback\r
347                 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");\r
348 \r
349                 waitForProcessEnd(businessKey, 10000);\r
350                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
351                 Assert.assertNotNull(wfe);\r
352                 if (wfe != null) {\r
353                         System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
354                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
355                         Assert.assertTrue(wfe.getErrorCode() == 5310);\r
356                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));\r
357                 }\r
358                 logEnd();\r
359         }\r
360 \r
361         @Test\r
362         @Deployment(resources = {\r
363                         "subprocess/DoDeleteVfModule.bpmn",\r
364                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
365                         "subprocess/UpdateAAIVfModule.bpmn",\r
366                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
367                         "subprocess/DeleteAAIVfModule.bpmn",\r
368                         "subprocess/SDNCAdapterV1.bpmn",\r
369                         "subprocess/VnfAdapterRestV1.bpmn"\r
370                 })\r
371         public void  TestDoDeleteVfModuleVNFFailure() {\r
372                 // delete the Base Module and Generic Vnf - VNFAdapter failure\r
373                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
374                 String request =\r
375                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
376                         "  <request-info>" + EOL +\r
377                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
378                         "    <source>PORTAL</source>" + EOL +\r
379                         "  </request-info>" + EOL +\r
380                         "  <vnf-inputs>" + EOL +\r
381                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
382                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
383                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
384                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
385                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
386                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
387                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
388                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
389                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
390                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
391                         "  </vnf-inputs>" + EOL +\r
392                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
393                         "</vnf-request>" + EOL;\r
394 \r
395                 logStart();\r
396                 MockDoDeleteVfModule_SDNCSuccess();\r
397                 MockDoDeleteVfModule_DeleteVNFFailure();\r
398                 MockAAIGenericVnfSearch();\r
399                 MockAAIVfModulePUT(false);\r
400                 MockAAIDeleteGenericVnf();\r
401                 MockAAIDeleteVfModule();\r
402                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
403                 \r
404                 String businessKey = UUID.randomUUID().toString();\r
405                 Map<String, Object> variables = new HashMap<String, Object>();          \r
406                 variables.put("isDebugLogEnabled","true");\r
407                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
408                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
409                 variables.put("DoDeleteVfModuleRequest",request);\r
410                 invokeSubProcess("DoDeleteVfModule", businessKey, variables);\r
411 \r
412                 // "changedelete" operation not required for deleting a Vf Module\r
413 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
414                 // cause a failure by not injecting a callback\r
415 //              injectVNFRestCallbacks(callbacks, "vnfDelete");\r
416 //              waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
417 //              injectSDNCCallbacks(callbacks, "sdncDelete");\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("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +\r
424                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
425                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
426                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));\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  TestDoDeleteVfModuleVNFCallbackFailure() {\r
442                 // delete the Base Module and Generic Vnf - VNFAdapter Callback 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_DeleteVNFSuccess();\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<String, Object>();          \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                 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");\r
485                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
486 //              injectSDNCCallbacks(callbacks, "sdncDelete");\r
487 \r
488                 waitForProcessEnd(businessKey, 10000);\r
489                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);\r
490                 Assert.assertNotNull(wfe);\r
491                 if (wfe != null) {\r
492                         System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +\r
493                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
494                         Assert.assertTrue(wfe.getErrorCode() == 7020);\r
495                         Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));\r
496                 }\r
497                 logEnd();\r
498         }\r
499 \r
500         // start of mocks used locally and by other VF Module unit tests\r
501         public static void MockAAIVfModulePUT(boolean isCreate){\r
502                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
503                                 .withRequestBody(containing("MMSC"))\r
504                                 .willReturn(aResponse()\r
505                                                 .withStatus(isCreate ? 201 : 200)));\r
506                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
507                                 .withRequestBody(containing("PCRF"))\r
508                                 .willReturn(aResponse()\r
509                                                 .withStatus(500)\r
510                                                 .withHeader("Content-Type", "text/xml")\r
511                                                 .withBodyFile("aaiFault.xml")));\r
512                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))                          \r
513                                 .willReturn(aResponse()\r
514                                         .withStatus(200)));\r
515         }\r
516 \r
517         public static void MockDoDeleteVfModule_SDNCSuccess() {\r
518                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
519                                   .withRequestBody(containing("SvcAction>changedelete"))\r
520                                   .willReturn(aResponse()\r
521                                   .withStatus(200)\r
522                                   .withHeader("Content-Type", "text/xml")\r
523                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
524                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
525                                   .withRequestBody(containing("SvcAction>delete"))\r
526                                   .willReturn(aResponse()\r
527                                   .withStatus(200)\r
528                                   .withHeader("Content-Type", "text/xml")\r
529                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
530         }\r
531 \r
532         public static void MockDoDeleteVfModule_SDNCFailure() {\r
533                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
534                                   .withRequestBody(containing("SvcAction>changedelete"))\r
535                                   .willReturn(aResponse()\r
536                                   .withStatus(500)));\r
537                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
538                                   .withRequestBody(containing("SvcAction>delete"))\r
539                                   .willReturn(aResponse()\r
540                                   .withStatus(500)));\r
541         }\r
542 \r
543         public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
544                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
545                                 .willReturn(aResponse()\r
546                                 .withStatus(202)\r
547                                 .withHeader("Content-Type", "application/xml")));\r
548                 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
549                                 .willReturn(aResponse()\r
550                                 .withStatus(202)\r
551                                 .withHeader("Content-Type", "application/xml")));\r
552         }\r
553 \r
554         public static void MockDoDeleteVfModule_DeleteVNFFailure() {\r
555                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
556                                 .willReturn(aResponse()\r
557                                 .withStatus(500)\r
558                                 .withHeader("Content-Type", "application/xml")));\r
559         }\r
560 }\r
561 \r