Merge "Enable DeleteChildService functionality" into recursive-orch
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / adapter / vnf / tasks / VnfAdapterImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 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.junit.Assert.assertNotEquals;
25 import static org.junit.Assert.assertNull;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.doThrow;
29 import static org.mockito.Mockito.when;
30 import org.camunda.bpm.engine.delegate.BpmnError;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.mockito.ArgumentMatchers;
34 import org.mockito.InjectMocks;
35 import org.onap.so.FileUtil;
36 import org.onap.so.bpmn.BaseTaskTest;
37 import org.onap.so.bpmn.common.BuildingBlockExecution;
38 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
42 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
43 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
44 import org.onap.so.client.exception.BBObjectNotFoundException;
45 import org.springframework.beans.factory.annotation.Autowired;
46
47 public class VnfAdapterImplTest extends BaseTaskTest {
48
49     @InjectMocks
50     private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
51
52     private RequestContext requestContext;
53     private ServiceInstance serviceInstance;
54     private GenericVnf genericVnf;
55     private VfModule vfModule;
56     private VolumeGroup volumeGroup;
57
58     private static final String VNF_ADAPTER_REST_DELETE_RESPONSE =
59             FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
60     private static final String VNF_ADAPTER_REST_CREATE_RESPONSE =
61             FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
62     private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE =
63             FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
64     private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE =
65             FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
66     private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
67     private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
68     private static final String TEST_CONTRAIL_SERVICE_INSTANCE_FQDN = "default-domain:MSOTest:MsoNW-RA";
69     private static final String TEST_OAM_MANAGEMENT_V4_ADDRESS = "127.0.0.1";
70     private static final String TEST_OAM_MANAGEMENT_V6_ADDRESS = "2000:abc:bce:1111";
71     private static final String TEST_CONTRAIL_NETWORK_POLICY_FQDNS =
72             "MSOTest:DefaultPolicyFQDN2,MSOTest:DefaultPolicyFQDN1";
73
74     @Before
75     public void before() throws BBObjectNotFoundException {
76         requestContext = setRequestContext();
77         serviceInstance = setServiceInstance();
78         genericVnf = setGenericVnf();
79         vfModule = setVfModule();
80         volumeGroup = setVolumeGroup();
81         vfModule.setHeatStackId(null);
82         volumeGroup.setHeatStackId(null);
83         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
84                 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
85         doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
86                 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
87         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
88                 .thenReturn(serviceInstance);
89         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
90                 .thenReturn(volumeGroup);
91         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
92                 .thenReturn(genericVnf);
93         when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
94     }
95
96     @Test
97     public void preProcessVnfAdapterTest() {
98         vnfAdapterImpl.preProcessVnfAdapter(execution);
99
100         assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
101         assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
102     }
103
104     @Test
105     public void postProcessVnfAdapter_CreateResponseTest() {
106         execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
107         vnfAdapterImpl.postProcessVnfAdapter(execution);
108         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
109         assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, vfModule.getContrailServiceInstanceFqdn());
110         assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, execution.getVariable("contrailServiceInstanceFqdn"));
111         assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
112         assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, execution.getVariable("oamManagementV4Address"));
113         assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, genericVnf.getManagementV6Address());
114         assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, execution.getVariable("oamManagementV6Address"));
115         assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
116     }
117
118
119     @Test
120     public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
121         expectedException.expect(BpmnError.class);
122         execution.setVariable("WorkflowResponse", "<vfModuleStackId></vfModuleStackId>");
123         vnfAdapterImpl.postProcessVnfAdapter(execution);
124     }
125
126     @Test
127     public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
128         execution.setVariable("WorkflowResponse", "<createVfModuleResponse></createVfModuleResponse>");
129         vnfAdapterImpl.postProcessVnfAdapter(execution);
130         assertNull(vfModule.getHeatStackId());
131     }
132
133     @Test
134     public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
135         execution.setVariable("WorkflowResponse",
136                 "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
137         vnfAdapterImpl.postProcessVnfAdapter(execution);
138         assertNull(vfModule.getHeatStackId());
139     }
140
141     @Test
142     public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleOutputs() {
143         execution.setVariable("WorkflowResponse",
144                 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
145         vnfAdapterImpl.postProcessVnfAdapter(execution);
146         assertNull(vfModule.getHeatStackId());
147         assertNull(vfModule.getContrailServiceInstanceFqdn());
148         assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
149         assertNotEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
150         assertNull(execution.getVariable("oamManagementV4Address"));
151         assertNull(genericVnf.getManagementV6Address());
152         assertNull(execution.getVariable("oamManagementV6Address"));
153         assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
154     }
155
156     @Test
157     public void postProcessVnfAdapter_DeleteResponseTest() {
158         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
159         execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_DELETE_RESPONSE);
160         vnfAdapterImpl.postProcessVnfAdapter(execution);
161         assertNull(vfModule.getHeatStackId());
162         assertEquals(vfModule.getContrailServiceInstanceFqdn(), "");
163         assertEquals(execution.getVariable("contrailServiceInstanceFqdn"), "");
164         assertEquals(genericVnf.getIpv4OamAddress(), "");
165         assertEquals(execution.getVariable("oamManagementV4Address"), "");
166         assertEquals(genericVnf.getManagementV6Address(), "");
167         assertEquals(execution.getVariable("oamManagementV6Address"), "");
168         assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
169     }
170
171     @Test
172     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleOutputs() {
173         execution.setVariable("WorkflowResponse",
174                 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
175         vnfAdapterImpl.postProcessVnfAdapter(execution);
176         assertNull(vfModule.getHeatStackId());
177         assertNull(vfModule.getContrailServiceInstanceFqdn());
178         assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
179         assertNull(execution.getVariable("oamManagementV4Address"));
180         assertNull(execution.getVariable("oamManagementV6Address"));
181         assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
182     }
183
184     @Test
185     public void postProcessVnfAdapter_ResponseNullTest() {
186         execution.setVariable("WorkflowResponse", null);
187         vnfAdapterImpl.postProcessVnfAdapter(execution);
188         assertNull(vfModule.getHeatStackId());
189     }
190
191     @Test
192     public void postProcessVnfAdapter_ResponseEmptyTest() {
193         execution.setVariable("WorkflowResponse", "");
194         vnfAdapterImpl.postProcessVnfAdapter(execution);
195         assertNull(vfModule.getHeatStackId());
196     }
197
198     @Test
199     public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
200         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
201         execution.setVariable("WorkflowResponse",
202                 "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
203         vnfAdapterImpl.postProcessVnfAdapter(execution);
204         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
205     }
206
207     @Test
208     public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
209         expectedException.expect(BpmnError.class);
210         execution.setVariable("WorkflowResponse", "<vfModuleDeleted></vfModuleDeleted>");
211         vnfAdapterImpl.postProcessVnfAdapter(execution);
212     }
213
214     @Test
215     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
216         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
217         execution.setVariable("WorkflowResponse", "<deleteVfModuleResponse></deleteVfModuleResponse>");
218         vnfAdapterImpl.postProcessVnfAdapter(execution);
219         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
220     }
221
222     @Test
223     public void preProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
224         expectedException.expect(BpmnError.class);
225         doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
226                 ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID));
227
228         vnfAdapterImpl.preProcessVnfAdapter(execution);
229     }
230
231     @Test
232     public void postProcessVnfAdapter_CreateVolumeResponseTest() {
233         execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
234         vnfAdapterImpl.postProcessVnfAdapter(execution);
235         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
236     }
237
238     @Test
239     public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
240         expectedException.expect(BpmnError.class);
241         execution.setVariable("WorkflowResponse", "<createVolumeGroupResponse></createVolumeGroupResponse>");
242         vnfAdapterImpl.postProcessVnfAdapter(execution);
243         assertNull(volumeGroup.getHeatStackId());
244     }
245
246     @Test
247     public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
248         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
249         execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
250         vnfAdapterImpl.postProcessVnfAdapter(execution);
251         assertNull(volumeGroup.getHeatStackId());
252     }
253
254
255     @Test
256     public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
257         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
258         execution.setVariable("WorkflowResponse",
259                 "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
260         vnfAdapterImpl.postProcessVnfAdapter(execution);
261         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
262     }
263
264     @Test
265     public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
266         expectedException.expect(BpmnError.class);
267         execution.setVariable("WorkflowResponse", "<volumeGroupDeleted></volumeGroupDeleted>");
268         vnfAdapterImpl.postProcessVnfAdapter(execution);
269     }
270
271     @Test
272     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
273         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
274         execution.setVariable("WorkflowResponse", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
275         vnfAdapterImpl.postProcessVnfAdapter(execution);
276         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
277     }
278
279     @Test
280     public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
281         doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
282                 ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
283
284         execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
285         expectedException.expect(BpmnError.class);
286
287         vnfAdapterImpl.postProcessVnfAdapter(execution);
288     }
289 }