acccbf57887c1924dd0ced236fa9a217dc9842c4
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / ReplaceVnfInfraTest.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.stubFor;\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
30 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;\r
31 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;\r
36 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;\r
37 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;\r
38 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;\r
39 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;\r
40 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;\r
41 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;\r
42 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;\r
43 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
44 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
45 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
46 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;\r
47 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;\r
48 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;\r
49 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;\r
50 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
51 import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicyAbort;\r
52 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
53 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;\r
54 import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;\r
55 \r
56 import java.io.IOException;\r
57 import java.util.HashMap;\r
58 import java.util.Map;\r
59 import java.util.UUID;\r
60 \r
61 import org.camunda.bpm.engine.test.Deployment;\r
62 import org.junit.Ignore;\r
63 import org.junit.Test;\r
64 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
65 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;\r
66 import org.openecomp.mso.bpmn.mock.FileUtil;\r
67 \r
68 /**\r
69  * Unit test cases for UpdateVnfInfra.bpmn\r
70  */\r
71 public class ReplaceVnfInfraTest extends WorkflowTest {\r
72         \r
73         private final CallbackSet callbacks = new CallbackSet();\r
74         private static final String EOL = "\n";\r
75         private final String vnfAdapterDeleteCallback = \r
76                         "<deleteVfModuleResponse>" + EOL +\r
77                         "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
78                         "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
79                         "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
80                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
81                         "</deleteVfModuleResponse>" + EOL;\r
82 \r
83         public ReplaceVnfInfraTest() throws IOException {\r
84                 callbacks.put("deactivate", FileUtil.readResourceFile(\r
85                                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
86                 callbacks.put("unassign", FileUtil.readResourceFile(\r
87                                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
88                 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
89                 callbacks.put("changeassign", FileUtil.readResourceFile(\r
90                                 "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));\r
91                 callbacks.put("activate", FileUtil.readResourceFile(\r
92                                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
93                 callbacks.put("query", FileUtil.readResourceFile(\r
94                                 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));         \r
95                 callbacks.put("vnfUpdate", FileUtil.readResourceFile(\r
96                                 "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));\r
97         }\r
98         \r
99         /**\r
100          * Sunny day scenario.\r
101          * \r
102          * @throws Exception\r
103          */\r
104         @Test   \r
105     @Ignore\r
106         @Deployment(resources = {\r
107                 "process/ReplaceVnfInfra.bpmn",         \r
108                 "subprocess/DoDeleteVfModule.bpmn",\r
109                 "subprocess/DoDeleteVnfAndModules.bpmn",\r
110                 "subprocess/DeleteAAIVfModule.bpmn",\r
111                 "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
112                 "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
113                 "subprocess/SDNCAdapterV1.bpmn",\r
114                 "subprocess/DoDeleteVnfAndModules.bpmn",\r
115                 "subprocess/GenericDeleteVnf.bpmn", \r
116                 "subprocess/DoDeleteVnf.bpmn", \r
117                 "subprocess/DoDeleteVfModule.bpmn",\r
118                 "subprocess/VnfAdapterRestV1.bpmn",\r
119                 "subprocess/UpdateAAIGenericVnf.bpmn",\r
120                 "subprocess/UpdateAAIVfModule.bpmn",\r
121                 "subprocess/GenericGetService.bpmn",\r
122                 "subprocess/GenericGetVnf.bpmn",\r
123                 "subprocess/GenericPutVnf.bpmn",\r
124                 "subprocess/DoCreateVnf.bpmn",\r
125                 "subprocess/GenerateVfModuleName.bpmn",\r
126                 "subprocess/DoCreateVfModule.bpmn",\r
127                 "subprocess/DoCreateVnfAndModules.bpmn",                                        \r
128                 "subprocess/ConfirmVolumeGroupName.bpmn",\r
129                 "subprocess/CreateAAIVfModule.bpmn",\r
130                 "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
131                 "subprocess/CompleteMsoProcess.bpmn",\r
132                 "subprocess/FalloutHandler.bpmn",\r
133                 "subprocess/DoCreateVnfAndModulesRollback.bpmn",\r
134                 "subprocess/BuildingBlock/DecomposeService.bpmn",\r
135                 "subprocess/BuildingBlock/RainyDayHandler.bpmn",\r
136                 "subprocess/BuildingBlock/ManualHandling.bpmn"\r
137                 \r
138                 })\r
139         public void sunnyDay() throws Exception {\r
140                                 \r
141                 logStart();\r
142                 MockAAIGenericVnfSearch();\r
143                 MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");\r
144                 MockDeleteGenericVnf("testVnfId123", "testReVer123");\r
145                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
146                 mockSDNCAdapter(200);\r
147                 MockDoDeleteVfModule_SDNCSuccess();\r
148                 MockDoDeleteVfModule_DeleteVNFSuccess();\r
149                 MockAAIDeleteVfModule();                \r
150                 \r
151                 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");\r
152                 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
153                 //MockGetGenericVnfById_404("testVnfId");\r
154                 MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json");\r
155                 //MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");\r
156                 //MockPutGenericVnf(".*");\r
157                 MockAAIVfModule();\r
158                 MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
159                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", ".*");\r
160                 //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");        \r
161                 //mockVNFPut("skask", "/supercool", 202);\r
162                 //mockVNFPut("skask", "/lukewarm", 202);\r
163                 //MockVNFAdapterRestVfModule();\r
164                 //MockDBUpdateVfModule();       \r
165                 //MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);\r
166                 //MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);\r
167                 MockSetInMaintFlagByVnfId("skask", 200);\r
168                 MockPolicySkip();\r
169                 \r
170                 //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
171                 //mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
172                 \r
173                 String businessKey = UUID.randomUUID().toString();\r
174                 String updaetVnfRequest =\r
175                         FileUtil.readResourceFile("__files/InfrastructureFlows/ReplaceVnf_VID_request.json");\r
176                 \r
177                 Map<String, Object> variables = setupVariablesSunnyDayVID();\r
178                 \r
179                 \r
180                 TestAsyncResponse asyncResponse = invokeAsyncProcess("ReplaceVnfInfra",\r
181                         "v1", businessKey, updaetVnfRequest, variables);\r
182                 \r
183                 WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);\r
184                 \r
185                 String responseBody = response.getResponse();\r
186                 System.out.println("Workflow (Synch) Response:\n" + responseBody);\r
187                 \r
188                 //injectSDNCCallbacks(callbacks, "deactivate");\r
189                 //injectSDNCCallbacks(callbacks, "deactivate");\r
190                 injectVNFRestCallbacks(callbacks, "vnfDelete");\r
191                 //injectSDNCCallbacks(callbacks, "unassign");\r
192                 MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");\r
193                 injectSDNCCallbacks(callbacks, "unassign");\r
194                 \r
195                 \r
196                 injectSDNCCallbacks(callbacks, "changeassign, query");\r
197                 injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
198                 injectSDNCCallbacks(callbacks, "activate");\r
199                 injectSDNCCallbacks(callbacks, "changeassign, query");\r
200                 injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
201                 injectSDNCCallbacks(callbacks, "activate");\r
202                 \r
203                 // TODO add appropriate assertions\r
204 \r
205                 waitForProcessEnd(businessKey, 10000);\r
206                 checkVariable(businessKey, "ReplaceVfModuleInfraSuccessIndicator", true);\r
207                 \r
208                 logEnd();\r
209         }\r
210         \r
211         // Active Scenario\r
212         private Map<String, Object> setupVariablesSunnyDayVID() {\r
213                                 Map<String, Object> variables = new HashMap<String, Object>();\r
214                                 //try {\r
215                                 //      variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));\r
216                                 //}\r
217                                 //catch (Exception e) {\r
218                                         \r
219                                 //}\r
220                                 //variables.put("mso-request-id", "testRequestId");\r
221                                 variables.put("requestId", "testRequestId");                            \r
222                                 variables.put("isDebugLogEnabled", "true");                             \r
223                                 variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");\r
224                                 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
225                                 variables.put("vnfType", "vSAMP12");                                    \r
226                                 variables.put("serviceType", "MOG");    \r
227                                                 \r
228                                 return variables;\r
229                                 \r
230                         }\r
231         \r
232         public static void MockDoDeleteVfModule_SDNCSuccess() {\r
233                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
234                                   .withRequestBody(containing("SvcAction>deactivate"))\r
235                                   .willReturn(aResponse()\r
236                                   .withStatus(200)\r
237                                   .withHeader("Content-Type", "text/xml")\r
238                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
239                 stubFor(post(urlEqualTo("/SDNCAdapter"))\r
240                                   .withRequestBody(containing("SvcAction>unassign"))\r
241                                   .willReturn(aResponse()\r
242                                   .withStatus(200)\r
243                                   .withHeader("Content-Type", "text/xml")\r
244                                   .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
245         }\r
246 \r
247         \r
248         public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
249                 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
250                                 .willReturn(aResponse()\r
251                                 .withStatus(202)\r
252                                 .withHeader("Content-Type", "application/xml")));\r
253                 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
254                                 .willReturn(aResponse()\r
255                                 .withStatus(202)\r
256                                 .withHeader("Content-Type", "application/xml")));\r
257         }\r
258         \r
259 }\r