d361d1e511527886d836dcae86e3bb380c651c52
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / CreateVfModuleVolumeInfraV1Test.java
1 /*- 
2  * ============LICENSE_START======================================================= 
3  * OPENECOMP - MSO 
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<String, Object>();
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<String, Object>();
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<String, Object>();
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<String, Object>();
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<String, Object>();
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<String, Object>();
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<String, Object>();
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 }