82208d9f64a013d44befbdca549367179ace5c40
[so.git] /
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.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<>();\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