Change the header to SO
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DeleteVfModuleInfraTest.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.get;\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.put;\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
31 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;\r
34 \r
35 import java.io.IOException;\r
36 import java.util.HashMap;\r
37 import java.util.Map;\r
38 import java.util.UUID;\r
39 \r
40 import org.camunda.bpm.engine.test.Deployment;\r
41 import org.junit.Ignore;\r
42 import org.junit.Test;\r
43 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
44 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;\r
45 import org.openecomp.mso.bpmn.core.WorkflowException;\r
46 import org.openecomp.mso.bpmn.mock.FileUtil;\r
47 \r
48 import com.github.tomakehurst.wiremock.client.WireMock;\r
49 /**\r
50  * Unit test for DoDeleteVfModule.bpmn.\r
51  */\r
52 public class DeleteVfModuleInfraTest extends WorkflowTest {\r
53         private final CallbackSet callbacks = new CallbackSet();\r
54         \r
55         private static final String EOL = "\n";\r
56 \r
57         private final String vnfAdapterDeleteCallback = \r
58                         "<deleteVfModuleResponse>" + EOL +\r
59                         "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
60                         "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
61                         "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
62                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
63                         "       <vfModuleOutputs>" + EOL +  \r
64                         "        <entry>" + EOL +\r
65                         "        <key>policyKey1_contrail_network_policy_fqdn</key>" + EOL +\r
66                         " <value>MSOTest:DefaultPolicyFQDN1</value>" + EOL +\r
67                         "</entry>" + EOL +\r
68                         "<entry>" + EOL +\r
69                         "<key>policyKey2_contrail_network_policy_fqdn</key>" + EOL +\r
70                         "<value>MSOTest:DefaultPolicyFQDN2</value>" + EOL +\r
71                         "</entry>" + EOL +\r
72                         "        <entry>" + EOL +\r
73                         "        <key>oam_management_v4_address</key>" + EOL +\r
74                         " <value>1234</value>" + EOL +\r
75                         "</entry>" + EOL +\r
76                         "        <entry>" + EOL +\r
77                         "        <key>oam_management_v6_address</key>" + EOL +\r
78                         " <value>1234</value>" + EOL +\r
79                         "</entry>" + EOL +\r
80                         "</vfModuleOutputs>" + EOL +\r
81                         "</deleteVfModuleResponse>" + EOL;\r
82                                 \r
83         private final String vnfAdapterDeleteCallbackFail = \r
84                         "<vfModuleException>" + EOL +\r
85                         "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +\r
86                         "    <category>INTERNAL</category>" + EOL +\r
87                         "    <rolledBack>false</rolledBack>" + EOL +\r
88                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
89                         "</vfModuleException>" + EOL;\r
90                                         \r
91         private final String sdncAdapterDeleteCallback =\r
92                 "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +\r
93                 "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
94                 "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
95                 "</output>" + EOL;\r
96         \r
97         public DeleteVfModuleInfraTest() throws IOException {\r
98                 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);\r
99                 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);\r
100                 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
101                 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);\r
102         }\r
103 \r
104         @Test\r
105         @Deployment(resources = {\r
106                         "process/Infrastructure/DeleteVfModuleInfra.bpmn",\r
107                         "subprocess/DoDeleteVfModule.bpmn",\r
108                         "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
109                         "subprocess/UpdateAAIVfModule.bpmn",\r
110                         "subprocess/UpdateAAIGenericVnf.bpmn",\r
111                         "subprocess/DeleteAAIVfModule.bpmn",\r
112                         "subprocess/SDNCAdapterV1.bpmn",\r
113                         "subprocess/VnfAdapterRestV1.bpmn",\r
114                         "subprocess/CompleteMsoProcess.bpmn",\r
115                         "subprocess/FalloutHandler.bpmn"\r
116                 })\r
117         @Ignore\r
118         public void  TestDeleteVfModuleSuccess() throws Exception {\r
119                 // delete the Base Module\r
120                 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
121                 String request =\r
122                         "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
123                         "  <request-info>" + EOL +\r
124                         "    <request-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</request-id>" + EOL +\r
125                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
126                         "    <source>PORTAL</source>" + EOL +\r
127                         "  </request-info>" + EOL +\r
128                         "  <vnf-inputs>" + EOL +\r
129                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
130                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
131                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
132                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
133                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
134                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
135                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
136                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
137                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
138                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
139                         "  </vnf-inputs>" + EOL +\r
140                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
141                         "</vnf-request>" + EOL;\r
142                 logStart();\r
143                 WireMock.reset();\r
144                 \r
145                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
146                                   .withRequestBody(containing("SvcAction>changedelete"))\r
147                                   .willReturn(aResponse()\r
148                                   .withStatus(200)\r
149                                   .withHeader("Content-Type", "text/xml")\r
150                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
151                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
152                                   .withRequestBody(containing("SvcAction>delete"))\r
153                                   .willReturn(aResponse()\r
154                                   .withStatus(200)\r
155                                   .withHeader("Content-Type", "text/xml")\r
156                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
157                 \r
158                 mockVNFDelete(".*", "/.*", 202);\r
159 //              MockAAIGenericVnfSearch();\r
160 //              MockAAIVfModulePUT(false);\r
161 //              MockAAIDeleteGenericVnf();\r
162 //              MockAAIDeleteVfModule();\r
163                 mockUpdateRequestDB(200, "VfModularity/DBUpdateResponse.xml");\r
164                 \r
165                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a73/[?]resource-version=0000073"))\r
166                                 .willReturn(aResponse()\r
167                                                 .withStatus(200)));\r
168                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c720/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a75/[?]resource-version=0000075"))\r
169                                 .willReturn(aResponse()\r
170                                                 .withStatus(200)));\r
171                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a78/[?]resource-version=0000078"))\r
172                                 .willReturn(aResponse()\r
173                                                 .withStatus(200)));\r
174                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c719/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a77/[?]resource-version=0000077"))\r
175                                 .willReturn(aResponse()\r
176                                                 .withStatus(500)\r
177                                                 .withHeader("Content-Type", "text/xml")\r
178                                                 .withBodyFile("aaiFault.xml")));\r
179                 stubFor(get(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy\\?network-policy-fqdn=.*"))\r
180                                   .willReturn(aResponse()\r
181                                   .withStatus(200)\r
182                                   .withHeader("Content-Type", "text/xml")\r
183                                   .withBodyFile("VfModularity/QueryNetworkPolicy_AAIResponse_Success.xml")));\r
184 \r
185                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy/.*"))\r
186                                 .willReturn(aResponse()\r
187                                                 .withStatus(200)));\r
188                 \r
189                 \r
190                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/[?]resource-version=0000021"))\r
191                                 .willReturn(aResponse()\r
192                                                 .withStatus(200)));\r
193                 stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718/[?]resource-version=0000018"))\r
194                                 .willReturn(aResponse()\r
195                                                 .withStatus(500)\r
196                                                 .withHeader("Content-Type", "text/xml")\r
197                                                 .withBodyFile("aaiFault.xml")));\r
198                 \r
199                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
200                                 .withRequestBody(containing("MMSC"))\r
201                                 .willReturn(aResponse()\r
202                                                 .withStatus(200)));\r
203                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
204                                 .withRequestBody(containing("PCRF"))\r
205                                 .willReturn(aResponse()\r
206                                                 .withStatus(500)\r
207                                                 .withHeader("Content-Type", "text/xml")\r
208                                                 .withBodyFile("aaiFault.xml")));\r
209                 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))                          \r
210                                 .willReturn(aResponse()\r
211                                         .withStatus(200)));\r
212                 \r
213                 String body;\r
214                 \r
215                 // The following stubs are for CreateAAIVfModule and UpdateAAIVfModule\r
216         \r
217                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC23&depth=1"))\r
218                                 .willReturn(aResponse()\r
219                                                 .withStatus(500)\r
220                                                 .withHeader("Content-Type", "text/xml")\r
221                                                 .withBodyFile("aaiFault.xml")));\r
222         \r
223                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC22&depth=1"))\r
224                                 .willReturn(aResponse()\r
225                                                 .withStatus(404)\r
226                                                 .withHeader("Content-Type", "text/xml")\r
227                                                 .withBody("Generic VNF Not Found")));\r
228                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/768073c7-f41f-4822-9323-b75962763d74[?]depth=1"))\r
229                                 .willReturn(aResponse()\r
230                                                 .withStatus(404)\r
231                                                 .withHeader("Content-Type", "text/xml")\r
232                                                 .withBody("Generic VNF Not Found")));\r
233         \r
234                 body =\r
235                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
236                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
237                         "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
238                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
239                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
240                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
241                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
242                         "  <in-maint>false</in-maint>" + EOL +\r
243                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
244                         "  <resource-version>1508691</resource-version>" + EOL +\r
245                         "  <vf-modules>" + EOL +\r
246                         "    <vf-module>" + EOL +\r
247                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
248                         "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
249                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
250                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
251                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
252                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
253                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
254                         "      <resource-version>1508692</resource-version>" + EOL +\r
255                         "    </vf-module>" + EOL +\r
256                         "  </vf-modules>" + EOL +\r
257                         "  <relationship-list/>" + EOL +\r
258                         "  <l-interfaces/>" + EOL +\r
259                         "  <lag-interfaces/>" + EOL +\r
260                         "</generic-vnf>" + EOL;\r
261                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC21&depth=1"))\r
262                                 .willReturn(aResponse()\r
263                                                 .withStatus(200)\r
264                                                 .withHeader("Content-Type", "text/xml")\r
265                                                 .withBody(body)));\r
266                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721[?]depth=1"))\r
267                                 .willReturn(aResponse()\r
268                                                 .withStatus(200)\r
269                                                 .withHeader("Content-Type", "text/xml")\r
270                                                 .withBody(body)));\r
271         \r
272                 body =\r
273                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
274                         "  <vnf-id>2f6aee38-1e2a-11e6-82d1-ffc7d9ee8aa4</vnf-id>" + EOL +\r
275                         "  <vnf-name>STMTN5MMSC20</vnf-name>" + EOL +\r
276                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
277                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
278                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
279                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
280                         "  <in-maint>false</in-maint>" + EOL +\r
281                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
282                         "  <resource-version>1508691</resource-version>" + EOL +\r
283                         "  <vf-modules>" + EOL +\r
284                         "    <vf-module>" + EOL +\r
285                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
286                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-0-0</vf-module-name>" + EOL +\r
287                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
288                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
289                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
290                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
291                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
292                         "      <resource-version>1508692</resource-version>" + EOL +\r
293                         "    </vf-module>" + EOL +\r
294                         "    <vf-module>" + EOL +\r
295                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</vf-module-id>" + EOL +\r
296                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-1-0</vf-module-name>" + EOL +\r
297                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</persona-model-id>" + EOL +\r
298                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
299                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
300                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
301                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
302                         "      <resource-version>1508692</resource-version>" + EOL +\r
303                         "    </vf-module>" + EOL +\r
304                         "  </vf-modules>" + EOL +\r
305                         "  <relationship-list/>" + EOL +\r
306                         "  <l-interfaces/>" + EOL +\r
307                         "  <lag-interfaces/>" + EOL +\r
308                         "</generic-vnf>" + EOL;\r
309                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC20&depth=1"))\r
310                                 .willReturn(aResponse()\r
311                                                 .withStatus(200)\r
312                                                 .withHeader("Content-Type", "text/xml")\r
313                                                 .withBody(body)));\r
314                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/2f6aee38-1e2a-11e6-82d1-ffc7d9ee8aa4[?]depth=1"))\r
315                                 .willReturn(aResponse()\r
316                                                 .withStatus(200)\r
317                                                 .withHeader("Content-Type", "text/xml")\r
318                                                 .withBody(body)));\r
319         \r
320                 // The following stubs are for DeleteAAIVfModule\r
321         \r
322                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c723[?]depth=1"))\r
323                                 .willReturn(aResponse()\r
324                                                 .withStatus(500)\r
325                                                 .withHeader("Content-Type", "text/xml")\r
326                                                 .withBodyFile("aaiFault.xml")));\r
327         \r
328                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c722[?]depth=1"))\r
329                                 .willReturn(aResponse()\r
330                                                 .withStatus(404)\r
331                                                 .withHeader("Content-Type", "text/xml")\r
332                                                 .withBody("Generic VNF Not Found")));\r
333         \r
334                 body =\r
335                                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
336                                 "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
337                                 "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
338                                 "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
339                                 "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
340                                 "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
341                                 "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
342                                 "  <in-maint>false</in-maint>" + EOL +\r
343                                 "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
344                                 "  <resource-version>0000021</resource-version>" + EOL +\r
345                                 "  <vf-modules>" + EOL +\r
346                                 "    <vf-module>" + EOL +\r
347                                 "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
348                                 "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
349                                 "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
350                                 "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
351                                 "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
352                                 "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
353                                 "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
354                                 "      <resource-version>0000073</resource-version>" + EOL +\r
355                                 "    </vf-module>" + EOL +\r
356                                 "  </vf-modules>" + EOL +\r
357                                 "  <relationship-list/>" + EOL +\r
358                                 "  <l-interfaces/>" + EOL +\r
359                                 "  <lag-interfaces/>" + EOL +\r
360                                 "</generic-vnf>" + EOL;\r
361                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721[?]depth=1"))\r
362                                 .willReturn(aResponse()\r
363                                                 .withStatus(200)\r
364                                                 .withHeader("Content-Type", "text/xml")\r
365                                                 .withBody(body)));\r
366         \r
367                 body =\r
368                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
369                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c720</vnf-id>" + EOL +\r
370                         "  <vnf-name>STMTN5MMSC20</vnf-name>" + EOL +\r
371                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
372                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
373                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
374                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
375                         "  <in-maint>false</in-maint>" + EOL +\r
376                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
377                         "  <resource-version>0000020</resource-version>" + EOL +\r
378                         "  <vf-modules>" + EOL +\r
379                         "    <vf-module>" + EOL +\r
380                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</vf-module-id>" + EOL +\r
381                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-0-0</vf-module-name>" + EOL +\r
382                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</persona-model-id>" + EOL +\r
383                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
384                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
385                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
386                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
387                         "      <resource-version>0000074</resource-version>" + EOL +\r
388                         "    </vf-module>" + EOL +\r
389                         "    <vf-module>" + EOL +\r
390                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a75</vf-module-id>" + EOL +\r
391                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-1-0</vf-module-name>" + EOL +\r
392                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a75</persona-model-id>" + EOL +\r
393                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
394                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
395                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
396                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
397                         "      <resource-version>0000075</resource-version>" + EOL +\r
398                         "    </vf-module>" + EOL +\r
399                         "  </vf-modules>" + EOL +\r
400                         "  <relationship-list/>" + EOL +\r
401                         "  <l-interfaces/>" + EOL +\r
402                         "  <lag-interfaces/>" + EOL +\r
403                         "</generic-vnf>" + EOL;\r
404                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c720[?]depth=1"))\r
405                                 .willReturn(aResponse()\r
406                                                 .withStatus(200)\r
407                                                 .withHeader("Content-Type", "text/xml")\r
408                                                 .withBody(body)));\r
409         \r
410                 body =\r
411                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
412                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c719</vnf-id>" + EOL +\r
413                         "  <vnf-name>STMTN5MMSC19</vnf-name>" + EOL +\r
414                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
415                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
416                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
417                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
418                         "  <in-maint>false</in-maint>" + EOL +\r
419                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
420                         "  <resource-version>0000019</resource-version>" + EOL +\r
421                         "  <vf-modules>" + EOL +\r
422                         "    <vf-module>" + EOL +\r
423                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a76</vf-module-id>" + EOL +\r
424                         "      <vf-module-name>STMTN5MMSC19-MMSC::module-0-0</vf-module-name>" + EOL +\r
425                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a76</persona-model-id>" + EOL +\r
426                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
427                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
428                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
429                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
430                         "      <resource-version>0000076</resource-version>" + EOL +\r
431                         "    </vf-module>" + EOL +\r
432                         "    <vf-module>" + EOL +\r
433                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a77</vf-module-id>" + EOL +\r
434                         "      <vf-module-name>STMTN5MMSC19-MMSC::module-1-0</vf-module-name>" + EOL +\r
435                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a77</persona-model-id>" + EOL +\r
436                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
437                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
438                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
439                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
440                         "      <resource-version>0000077</resource-version>" + EOL +\r
441                         "    </vf-module>" + EOL +\r
442                         "  </vf-modules>" + EOL +\r
443                         "  <relationship-list/>" + EOL +\r
444                         "  <l-interfaces/>" + EOL +\r
445                         "  <lag-interfaces/>" + EOL +\r
446                         "</generic-vnf>" + EOL;\r
447                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c719[?]depth=1"))\r
448                                 .willReturn(aResponse()\r
449                                                 .withStatus(200)\r
450                                                 .withHeader("Content-Type", "text/xml")\r
451                                                 .withBody(body)));\r
452         \r
453                 body =\r
454                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
455                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c718</vnf-id>" + EOL +\r
456                         "  <vnf-name>STMTN5MMSC18</vnf-name>" + EOL +\r
457                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
458                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
459                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
460                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
461                         "  <in-maint>false</in-maint>" + EOL +\r
462                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
463                         "  <resource-version>0000018</resource-version>" + EOL +\r
464                         "  <vf-modules>" + EOL +\r
465                         "    <vf-module>" + EOL +\r
466                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a78</vf-module-id>" + EOL +\r
467                         "      <vf-module-name>STMTN5MMSC18-MMSC::module-0-0</vf-module-name>" + EOL +\r
468                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a78</persona-model-id>" + EOL +\r
469                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
470                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
471                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
472                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
473                         "      <resource-version>0000078</resource-version>" + EOL +\r
474                         "    </vf-module>" + EOL +\r
475                         "  </vf-modules>" + EOL +\r
476                         "  <relationship-list/>" + EOL +\r
477                         "  <l-interfaces/>" + EOL +\r
478                         "  <lag-interfaces/>" + EOL +\r
479                         "</generic-vnf>" + EOL;\r
480                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718[?]depth=1"))\r
481                                 .willReturn(aResponse()\r
482                                                 .withStatus(200)\r
483                                                 .withHeader("Content-Type", "text/xml")\r
484                                                 .withBody(body)));\r
485         \r
486                 body =\r
487                         "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
488                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
489                         "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
490                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
491                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
492                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
493                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
494                         "  <in-maint>false</in-maint>" + EOL +\r
495                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
496                         "  <resource-version>0000021</resource-version>" + EOL +\r
497                         "  <vf-modules>" + EOL +\r
498                         "    <vf-module>" + EOL +\r
499                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
500                         "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
501                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
502                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
503                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
504                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
505                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
506                         "      <resource-version>0000073</resource-version>" + EOL +\r
507                         "    </vf-module>" + EOL +\r
508                         "  </vf-modules>" + EOL +\r
509                         "  <relationship-list/>" + EOL +\r
510                         "  <l-interfaces/>" + EOL +\r
511                         "  <lag-interfaces/>" + EOL +\r
512                         "</generic-vnf>" + EOL;\r
513                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a73"))\r
514                                 .willReturn(aResponse()\r
515                                                 .withStatus(200)\r
516                                                 .withHeader("Content-Type", "text/xml")\r
517                                                 .withBody(body)));\r
518 \r
519                 String businessKey = UUID.randomUUID().toString();\r
520                 String deleteVfModuleRequest =\r
521                                 FileUtil.readResourceFile("__files/DeleteVfModule_VID_request.json");\r
522                 //Map<String, Object> variables = new HashMap<String, Object>();        \r
523                 \r
524                 //variables.put("isDebugLogEnabled","true");\r
525 //              variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
526 //              variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
527                 \r
528                 Map<String, Object> variables = setupVariablesSunnyDayVID();\r
529 \r
530                 TestAsyncResponse asyncResponse = invokeAsyncProcess("DeleteVfModuleInfra",\r
531                                 "v1", businessKey, deleteVfModuleRequest, variables);\r
532                 WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);\r
533                 String responseBody = response.getResponse();\r
534                 System.out.println("Workflow (Synch) Response:\n" + responseBody);\r
535 \r
536                 // "changedelete" operation not required for deleting a Vf Module\r
537 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
538                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
539                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
540                 injectSDNCCallbacks(callbacks, "sdncDelete");\r
541 \r
542                 waitForProcessEnd(businessKey, 10000);\r
543                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");\r
544                 checkVariable(businessKey, "DeleteVfModuleInfraSuccessIndicator", true);\r
545                 checkVariable(businessKey, "WorkflowException", null);\r
546                 if (wfe != null) {\r
547                         System.out.println("TestDeleteVfModuleInfraSuccess: ErrorCode=" + wfe.getErrorCode() +\r
548                                         ", ErrorMessage=" + wfe.getErrorMessage());\r
549                 }\r
550                 logEnd();\r
551         }\r
552         \r
553         // Active Scenario\r
554                         private Map<String, Object> setupVariablesSunnyDayVID() {\r
555                                 Map<String, Object> variables = new HashMap<String, Object>();\r
556                                 //try {\r
557                                 //      variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));\r
558                                 //}\r
559                                 //catch (Exception e) {\r
560                                         \r
561                                 //}\r
562                                 //variables.put("mso-request-id", "testRequestId");\r
563                                 variables.put("requestId", "testRequestId");            \r
564                                 variables.put("isBaseVfModule", "true");\r
565                                 variables.put("isDebugLogEnabled", "true");\r
566                                 variables.put("recipeTimeout", "0");            \r
567                                 variables.put("requestAction", "DELETE_VF_MODULE");\r
568                                 variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");\r
569                                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
570                                 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
571                                 variables.put("volumeGroupId", "");                     \r
572                                 variables.put("serviceType", "MOG");    \r
573                                 variables.put("vfModuleType", "");                      \r
574                                 return variables;\r
575                                 \r
576                         }\r
577 \r
578         \r
579 }