a5f51a8a57b69ad151849fd4f1a04e4e92a7f021
[so.git] /
1 /*- 
2  * ============LICENSE_START======================================================= 
3  * ONAP - SO 
4  * ================================================================================ 
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. 
6  * ================================================================================ 
7  * Licensed under the Apache License, Version 2.0 (the "License"); 
8  * you may not use this file except in compliance with the License. 
9  * You may obtain a copy of the License at 
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0 
12  * 
13  * Unless required by applicable law or agreed to in writing, software 
14  * distributed under the License is distributed on an "AS IS" BASIS, 
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
16  * See the License for the specific language governing permissions and 
17  * limitations under the License. 
18  * ============LICENSE_END========================================================= 
19  */
20
21 package org.openecomp.mso.bpmn.infrastructure;
22
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
24 import static com.github.tomakehurst.wiremock.client.WireMock.get;
25 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
26 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVolumeGroupById;
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVolumeGroupByName;
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVolumeGroupById;
32 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
33 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockPostVNFVolumeGroup;
34 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockPutVNFVolumeGroupRollback;
35
36 import java.io.IOException;
37 import java.util.HashMap;
38 import java.util.Map;
39 import java.util.UUID;
40
41 import org.camunda.bpm.engine.test.Deployment;
42 import org.junit.Ignore;
43 import org.junit.Test;
44 import org.openecomp.mso.bpmn.common.WorkflowTest;
45 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
46 import org.openecomp.mso.bpmn.mock.FileUtil;
47 import org.openecomp.mso.bpmn.mock.StubResponseAAI;
48
49 public class CreateVfModuleVolumeInfraV1Test extends WorkflowTest {
50
51     public static final String _prefix = "CVFMODVOL2_";
52
53     private final CallbackSet callbacks = new CallbackSet();
54
55     public CreateVfModuleVolumeInfraV1Test() throws IOException {
56         callbacks.put("volumeGroupCreate", FileUtil.readResourceFile(
57                 "__files/CreateVfModuleVolumeInfraV1/CreateVfModuleVolumeCallbackResponse.xml"));
58         callbacks.put("volumeGroupDelete", FileUtil.readResourceFile(
59                 "__files/DeleteVfModuleVolumeInfraV1/DeleteVfModuleVolumeCallbackResponse.xml"));
60         callbacks.put("volumeGroupException", FileUtil.readResourceFile(
61                 "__files/CreateVfModuleVolumeInfraV1/CreateVfModuleCallbackException.xml"));
62         callbacks.put("volumeGroupRollback", FileUtil.readResourceFile(
63                 "__files/CreateVfModuleVolumeInfraV1/RollbackVfModuleVolumeCallbackResponse.xml"));
64     }
65
66     /**
67      * Happy path scenario for VID
68      *****************************/
69     @Test
70     //@Ignore
71     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
72             "subprocess/GenericGetService.bpmn",
73             "subprocess/DoCreateVfModuleVolumeV2.bpmn",
74             "subprocess/FalloutHandler.bpmn",
75             "subprocess/CompleteMsoProcess.bpmn",
76             "subprocess/VnfAdapterRestV1.bpmn"})
77     public void TestSuccess() throws Exception {
78
79         logStart();
80
81         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
82         MockGetGenericVnfById("/TEST-VNF-ID-0123", "CreateVfModuleVolumeInfraV1/GenericVnf.xml", 200);
83         MockPutVolumeGroupById("AAIAIC25", "TEST-VOLUME-GROUP-ID-0123", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml", 201);
84         MockGetVolumeGroupByName("AAIAIC25", "MSOTESTVOL101a-vSAMP12_base_vol_module-0", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml", 200);
85         MockPutVolumeGroupById("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_updateVolumeName_AAIResponse_Success.xml", 200);
86         mockPostVNFVolumeGroup(202);
87
88         String businessKey = UUID.randomUUID().toString();
89         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
90
91         Map<String, Object> testVariables = new HashMap<>();
92         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
93         testVariables.put("serviceInstanceId", "test-service-instance-id");
94         testVariables.put("vnfId", "TEST-VNF-ID-0123");
95         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
96         testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
97
98         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
99         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
100
101         String responseBody = response.getResponse();
102         System.out.println("Workflow (Synch) Response:\n" + responseBody);
103
104         injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
105
106         waitForProcessEnd(businessKey, 100000);
107         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", true);
108
109         logEnd();
110     }
111
112     /**
113      * Fail - trigger rollback
114      *****************************/
115     @Test
116     //@Ignore
117     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
118             "subprocess/GenericGetService.bpmn",
119             "subprocess/DoCreateVfModuleVolumeV2.bpmn",
120             "subprocess/DoCreateVfModuleVolumeRollback.bpmn",
121             "subprocess/FalloutHandler.bpmn",
122             "subprocess/CompleteMsoProcess.bpmn",
123             "subprocess/VnfAdapterRestV1.bpmn"})
124     public void TestRollback() throws Exception {
125
126         logStart();
127
128         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
129         MockGetGenericVnfById("/TEST-VNF-ID-0123", "CreateVfModuleVolumeInfraV1/GenericVnf.xml", 200);
130         MockPutVolumeGroupById("AAIAIC25", "TEST-VOLUME-GROUP-ID-0123", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml", 201);
131         mockPostVNFVolumeGroup(202);
132         mockPutVNFVolumeGroupRollback("TEST-VOLUME-GROUP-ID-0123", 202);
133         MockDeleteVolumeGroupById("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "1460134360", 202);
134         StubResponseAAI.MockGetVolumeGroupByName_404("AAIAIC25", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
135         StubResponseAAI.MockGetVolumeGroupByName("AAIAIC25", "MSOTESTVOL101a-vSAMP12_base_vol_module-0", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml", 200);
136         StubResponseAAI.MockDeleteVolumeGroup("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "1460134360");
137
138         String businessKey = UUID.randomUUID().toString();
139         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
140
141         Map<String, Object> testVariables = new HashMap<>();
142         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
143         testVariables.put("serviceInstanceId", "test-service-instance-id");
144         testVariables.put("vnfId", "TEST-VNF-ID-0123");
145         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
146         testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
147
148         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
149         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
150
151         String responseBody = response.getResponse();
152         System.out.println("Workflow (Synch) Response:\n" + responseBody);
153
154         injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
155         injectVNFRestCallbacks(callbacks, "volumeGroupDelete");
156
157         waitForProcessEnd(businessKey, 100000);
158         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
159
160         logEnd();
161     }
162
163     /**
164      * Happy path scenario for VID
165      *****************************/
166     @Test
167     @Ignore
168     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
169             "subprocess/GenericGetService.bpmn",
170             "subprocess/DoCreateVfModuleVolumeV1.bpmn",
171             "subprocess/FalloutHandler.bpmn",
172             "subprocess/CompleteMsoProcess.bpmn",
173             "subprocess/VnfAdapterRestV1.bpmn"})
174     public void TestVolumeGroupAlreadyExists() throws Exception {
175
176         logStart();
177
178         MockGetVolumeGroupByName("AAIAIC25", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml", 200);
179         MockGetGenericVnfById("TEST-VNF-ID-0123", "CreateVfModuleVolumeInfraV1/GenericVnf.xml", 200);
180         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
181
182         String businessKey = UUID.randomUUID().toString();
183         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
184
185         Map<String, Object> testVariables = new HashMap<>();
186         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
187         testVariables.put("serviceInstanceId", "test-service-instance-id");
188         testVariables.put("vnfId", "TEST-VNF-ID-0123");
189         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
190         testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
191
192         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
193         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
194
195         String responseBody = response.getResponse();
196         System.out.println("Workflow (Synch) Response:\n" + responseBody);
197
198         //injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
199
200         waitForProcessEnd(businessKey, 100000);
201         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
202
203         logEnd();
204     }
205
206     /**
207      * Vnf Create fail
208      *****************************/
209     @Test
210     @Ignore
211     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
212             "subprocess/GenericGetService.bpmn",
213             "subprocess/DoCreateVfModuleVolumeV1.bpmn",
214             "subprocess/FalloutHandler.bpmn",
215             "subprocess/CompleteMsoProcess.bpmn",
216             "subprocess/VnfAdapterRestV1.bpmn"})
217     public void TestVNfCreateFail() throws Exception {
218
219         logStart();
220
221         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
222         MockGetGenericVnfById("/TEST-VNF-ID-0123", "CreateVfModuleVolumeInfraV1/GenericVnf.xml", 200);
223         MockPutVolumeGroupById("AAIAIC25", "TEST-VOLUME-GROUP-ID-0123", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_createVolumeName_AAIResponse_Success.xml", 201);
224         MockGetVolumeGroupByName("AAIAIC25", "MSOTESTVOL101a-vSAMP12_base_vol_module-0", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_queryVolumeName_AAIResponse_Success.xml", 200);
225         MockPutVolumeGroupById("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "CreateVfModuleVolumeInfraV1/createVfModuleVolume_updateVolumeName_AAIResponse_Success.xml", 200);
226         mockPostVNFVolumeGroup(202);
227         MockDeleteVolumeGroupById("AAIAIC25", "8424bb3c-c3e7-4553-9662-469649ed9379", "1460134360", 204);
228
229         String businessKey = UUID.randomUUID().toString();
230         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
231
232         Map<String, Object> testVariables = new HashMap<>();
233         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
234         testVariables.put("serviceInstanceId", "test-service-instance-id");
235         testVariables.put("vnfId", "TEST-VNF-ID-0123");
236         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
237         testVariables.put("test-volume-group-id", "TEST-VOLUME-GROUP-ID-0123");
238
239         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
240         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
241
242         String responseBody = response.getResponse();
243         System.out.println("Workflow (Synch) Response:\n" + responseBody);
244
245         injectVNFRestCallbacks(callbacks, "volumeGroupException");
246
247         waitForProcessEnd(businessKey, 100000);
248         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
249
250         logEnd();
251     }
252
253
254     /**
255      * Error scenario - vnf not found
256      ********************************/
257     @Test
258     @Ignore
259     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
260             "subprocess/GenericGetService.bpmn",
261             "subprocess/DoCreateVfModuleVolumeV1.bpmn",
262             "subprocess/FalloutHandler.bpmn",
263             "subprocess/CompleteMsoProcess.bpmn",
264             "subprocess/VnfAdapterRestV1.bpmn"})
265     public void TestFailVnfNotFound() throws Exception {
266
267         logStart();
268
269         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
270
271         String businessKey = UUID.randomUUID().toString();
272         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request_noreqparm.json");
273
274         Map<String, Object> testVariables = new HashMap<>();
275         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
276         testVariables.put("serviceInstanceId", "test-service-instance-id");
277         testVariables.put("vnfId", "TEST-VNF-ID-0123");
278         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
279
280         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
281         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
282
283         String responseBody = response.getResponse();
284         System.out.println("Workflow (Synch) Response:\n" + responseBody);
285
286         //injectVNFRestCallbacks(callbacks, "volumeGroupCreate");
287
288         waitForProcessEnd(businessKey, 100000);
289         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
290
291         logEnd();
292     }
293
294     /**
295      * Error scenario - error in validation
296      **************************************/
297     @Test
298     @Ignore
299     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
300             "subprocess/GenericGetService.bpmn",
301             "subprocess/DoCreateVfModuleVolumeV1.bpmn",
302             "subprocess/FalloutHandler.bpmn",
303             "subprocess/CompleteMsoProcess.bpmn",
304             "subprocess/VnfAdapterRestV1.bpmn"})
305     public void TestFailNoVnfPassed() throws Exception {
306
307         logStart();
308
309         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
310
311         String businessKey = UUID.randomUUID().toString();
312         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
313
314         Map<String, Object> testVariables = new HashMap<>();
315         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
316         testVariables.put("serviceInstanceId", "test-service-instance-id");
317         //testVariables.put("vnfId", "TEST-VNF-ID-0123");
318         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
319
320         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
321         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
322
323         String responseBody = response.getResponse();
324         System.out.println("Workflow (Synch) Response:\n" + responseBody);
325         waitForProcessEnd(businessKey, 100000);
326         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
327
328         logEnd();
329     }
330
331     /**
332      * Error scenario - service instance not found
333      *********************************************/
334     @Test
335     @Ignore
336     @Deployment(resources = {"process/CreateVfModuleVolumeInfraV1.bpmn",
337             "subprocess/GenericGetService.bpmn",
338             "subprocess/DoCreateVfModuleVolumeV1.bpmn",
339             "subprocess/FalloutHandler.bpmn",
340             "subprocess/CompleteMsoProcess.bpmn",
341             "subprocess/VnfAdapterRestV1.bpmn"})
342     public void TestFailServiceInstanceNotFound() throws Exception {
343
344         logStart();
345
346         MockNodeQueryServiceInstanceById("test-service-instance-id", "CreateVfModuleVolumeInfraV1/getSIUrlById.xml");
347         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
348
349         String businessKey = UUID.randomUUID().toString();
350         String createVfModuleVolRequest = FileUtil.readResourceFile("__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json");
351
352         Map<String, Object> testVariables = new HashMap<>();
353         testVariables.put("requestId", "TEST-REQUEST-ID-0123");
354         testVariables.put("serviceInstanceId", "test-service-instance-id");
355         //testVariables.put("vnfId", "TEST-VNF-ID-0123");
356         testVariables.put("test-volume-group-name", "TEST-MSOTESTVOL101a-vSAMP12_base_vol_module-0");
357
358         TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleVolumeInfraV1", "v1", businessKey, createVfModuleVolRequest, testVariables);
359         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 1000000);
360
361         String responseBody = response.getResponse();
362         System.out.println("Workflow (Synch) Response:\n" + responseBody);
363         waitForProcessEnd(businessKey, 100000);
364         checkVariable(businessKey, "CVMVINFRAV1_SuccessIndicator", false);
365
366         logEnd();
367     }
368 }