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