Merge "Enable DeleteChildService functionality" into recursive-orch
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / adapter / vnf / tasks / VnfAdapterCreateTasksTest.java
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.onap.so.bpmn.infrastructure.adapter.vnf.tasks;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
31 import org.camunda.bpm.engine.delegate.BpmnError;
32 import org.junit.Test;
33 import org.mockito.ArgumentMatchers;
34 import org.mockito.InjectMocks;
35 import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
36 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
37 import org.onap.so.bpmn.BaseTaskTest;
38 import org.onap.so.bpmn.common.BuildingBlockExecution;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
44 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
45 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
46 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
47 import org.onap.so.db.catalog.beans.OrchestrationStatus;
48
49 public class VnfAdapterCreateTasksTest extends BaseTaskTest {
50     @InjectMocks
51     private VnfAdapterCreateTasks vnfAdapterCreateTasks = new VnfAdapterCreateTasks();
52
53
54     @Test
55     public void test_createVolumeGroupRequest() throws Exception {
56         RequestContext requestContext = setRequestContext();
57
58         ServiceInstance serviceInstance = setServiceInstance();
59
60         GenericVnf genericVnf = setGenericVnf();
61
62         VfModule vfModule = setVfModule();
63         vfModule.setSelflink("vfModuleSelfLink");
64         VolumeGroup volumeGroup = setVolumeGroup();
65         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
66
67         CloudRegion cloudRegion = setCloudRegion();
68
69         OrchestrationContext orchestrationContext = setOrchestrationContext();
70         orchestrationContext.setIsRollbackEnabled(true);
71
72         String sdncVnfQueryResponse = "SDNCVnfQueryResponse";
73         execution.setVariable("SDNCQueryResponse_" + vfModule.getVfModuleId(), sdncVnfQueryResponse);
74
75         CreateVolumeGroupRequest request = new CreateVolumeGroupRequest();
76         request.setVolumeGroupId("volumeGroupStackId");
77
78         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
79                 .thenReturn(genericVnf);
80         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
81                 .thenReturn(volumeGroup);
82         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
83         doReturn(request).when(vnfAdapterVolumeGroupResources).createVolumeGroupRequest(requestContext, cloudRegion,
84                 orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVnfQueryResponse);
85
86         vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
87
88         verify(vnfAdapterVolumeGroupResources, times(1)).createVolumeGroupRequest(requestContext, cloudRegion,
89                 orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVnfQueryResponse);
90
91         assertEquals(request.toXmlString(), execution.getVariable("VNFREST_Request"));
92     }
93
94     @Test
95     public void test_createVolumeGroupRequest_for_alaCarte_flow() throws Exception {
96         RequestContext requestContext = setRequestContext();
97         ServiceInstance serviceInstance = setServiceInstance();
98         GenericVnf genericVnf = setGenericVnf();
99         VolumeGroup volumeGroup = setVolumeGroup();
100         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
101
102         VfModule vfModule = setVfModule();
103         vfModule.setSelflink("vfModuleSelfLink");
104
105         CloudRegion cloudRegion = setCloudRegion();
106
107         OrchestrationContext orchestrationContext = setOrchestrationContext();
108         orchestrationContext.setIsRollbackEnabled(true);
109
110         CreateVolumeGroupRequest request = new CreateVolumeGroupRequest();
111         request.setVolumeGroupId("volumeGroupStackId");
112
113         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
114                 .thenReturn(genericVnf);
115         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
116                 .thenReturn(volumeGroup);
117         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
118         doReturn(request).when(vnfAdapterVolumeGroupResources).createVolumeGroupRequest(requestContext, cloudRegion,
119                 orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
120
121         vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
122
123         verify(vnfAdapterVolumeGroupResources, times(1)).createVolumeGroupRequest(any(RequestContext.class),
124                 any(CloudRegion.class), any(OrchestrationContext.class), eq(serviceInstance), eq(genericVnf),
125                 eq(volumeGroup), ArgumentMatchers.isNull());
126
127         assertEquals(request.toXmlString(), execution.getVariable("VNFREST_Request"));
128     }
129
130     @Test
131     public void test_createVolumeGroupRequest_exception() throws Exception {
132         doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
133                 ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
134         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
135                 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
136         expectedException.expect(BpmnError.class);
137
138         vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
139     }
140
141     @Test
142     public void test_createVfModule() throws Exception {
143         RequestContext requestContext = setRequestContext();
144
145         ServiceInstance serviceInstance = setServiceInstance();
146
147         GenericVnf genericVnf = setGenericVnf();
148
149         VfModule vfModule = setVfModule();
150
151         CloudRegion cloudRegion = setCloudRegion();
152
153         OrchestrationContext orchestrationContext = setOrchestrationContext();
154         orchestrationContext.setIsRollbackEnabled(true);
155
156         CreateVfModuleRequest modRequest = new CreateVfModuleRequest();
157         modRequest.setVfModuleId(vfModule.getVfModuleId());
158         modRequest.setBaseVfModuleStackId("baseVfModuleStackId");
159         modRequest.setVfModuleName(vfModule.getVfModuleName());
160         CreateVfModuleRequest createVfModuleRequest = modRequest;
161
162         String sdncVfModuleQueryResponse = "{someJson}";
163         execution.setVariable("SDNCQueryResponse_" + vfModule.getVfModuleId(), sdncVfModuleQueryResponse);
164
165         String sdncVnfQueryResponse = "{someJson}";
166         execution.setVariable("SDNCQueryResponse_" + genericVnf.getVnfId(), sdncVnfQueryResponse);
167
168         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
169                 .thenReturn(genericVnf);
170         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
171
172         doReturn(createVfModuleRequest).when(vnfAdapterVfModuleResources).createVfModuleRequest(requestContext,
173                 cloudRegion, orchestrationContext, serviceInstance, genericVnf, vfModule, null, sdncVnfQueryResponse,
174                 sdncVfModuleQueryResponse);
175
176         vnfAdapterCreateTasks.createVfModule(execution);
177
178         verify(vnfAdapterVfModuleResources, times(1)).createVfModuleRequest(requestContext, cloudRegion,
179                 orchestrationContext, serviceInstance, genericVnf, vfModule, null, sdncVnfQueryResponse,
180                 sdncVfModuleQueryResponse);
181
182         assertEquals(execution.getVariable("VNFREST_Request"), createVfModuleRequest.toXmlString());
183     }
184
185     @Test
186     public void test_createVfModuleWithVolumeGroup() throws Exception {
187         RequestContext requestContext = setRequestContext();
188
189         ServiceInstance serviceInstance = setServiceInstance();
190
191         GenericVnf genericVnf = setGenericVnf();
192
193         VfModule vfModule = setVfModule();
194
195         VolumeGroup volumeGroup = setVolumeGroup();
196
197         CloudRegion cloudRegion = setCloudRegion();
198
199         OrchestrationContext orchestrationContext = setOrchestrationContext();
200         orchestrationContext.setIsRollbackEnabled(true);
201
202         CreateVfModuleRequest modRequest = new CreateVfModuleRequest();
203         modRequest.setVfModuleId(vfModule.getVfModuleId());
204         modRequest.setBaseVfModuleStackId("baseVfModuleStackId");
205         modRequest.setVfModuleName(vfModule.getVfModuleName());
206         CreateVfModuleRequest createVfModuleRequest = modRequest;
207
208         String sdncVfModuleQueryResponse = "{someJson}";
209         execution.setVariable("SDNCQueryResponse_" + vfModule.getVfModuleId(), sdncVfModuleQueryResponse);
210
211         String sdncVnfQueryResponse = "{someJson}";
212         execution.setVariable("SDNCQueryResponse_" + genericVnf.getVnfId(), sdncVnfQueryResponse);
213
214         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
215                 .thenReturn(genericVnf);
216         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
217                 .thenReturn(volumeGroup);
218         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
219         doReturn(createVfModuleRequest).when(vnfAdapterVfModuleResources).createVfModuleRequest(requestContext,
220                 cloudRegion, orchestrationContext, serviceInstance, genericVnf, vfModule, volumeGroup,
221                 sdncVnfQueryResponse, sdncVfModuleQueryResponse);
222
223         vnfAdapterCreateTasks.createVfModule(execution);
224
225         verify(vnfAdapterVfModuleResources, times(1)).createVfModuleRequest(requestContext, cloudRegion,
226                 orchestrationContext, serviceInstance, genericVnf, vfModule, volumeGroup, sdncVnfQueryResponse,
227                 sdncVfModuleQueryResponse);
228
229         assertEquals(execution.getVariable("VNFREST_Request"), createVfModuleRequest.toXmlString());
230     }
231
232     @Test
233     public void createVfModuleExceptionTest() throws Exception {
234         // run with no data setup, and it will throw a BBObjectNotFoundException
235         doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
236                 ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
237         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
238                 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
239         expectedException.expect(BpmnError.class);
240         vnfAdapterCreateTasks.createVolumeGroupRequest(execution);
241     }
242 }