2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.bpmn.infrastructure.adapter.vnf.tasks;
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;
47 public class VnfAdapterImplTest extends BaseTaskTest {
50 private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
52 private RequestContext requestContext;
53 private ServiceInstance serviceInstance;
54 private GenericVnf genericVnf;
55 private VfModule vfModule;
56 private VolumeGroup volumeGroup;
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";
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);
97 public void preProcessVnfAdapterTest() {
98 vnfAdapterImpl.preProcessVnfAdapter(execution);
100 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
101 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
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"));
120 public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
121 expectedException.expect(BpmnError.class);
122 execution.setVariable("WorkflowResponse", "<vfModuleStackId></vfModuleStackId>");
123 vnfAdapterImpl.postProcessVnfAdapter(execution);
127 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
128 execution.setVariable("WorkflowResponse", "<createVfModuleResponse></createVfModuleResponse>");
129 vnfAdapterImpl.postProcessVnfAdapter(execution);
130 assertNull(vfModule.getHeatStackId());
134 public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
135 execution.setVariable("WorkflowResponse",
136 "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
137 vnfAdapterImpl.postProcessVnfAdapter(execution);
138 assertNull(vfModule.getHeatStackId());
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"));
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"));
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"));
185 public void postProcessVnfAdapter_ResponseNullTest() {
186 execution.setVariable("WorkflowResponse", null);
187 vnfAdapterImpl.postProcessVnfAdapter(execution);
188 assertNull(vfModule.getHeatStackId());
192 public void postProcessVnfAdapter_ResponseEmptyTest() {
193 execution.setVariable("WorkflowResponse", "");
194 vnfAdapterImpl.postProcessVnfAdapter(execution);
195 assertNull(vfModule.getHeatStackId());
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());
208 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
209 expectedException.expect(BpmnError.class);
210 execution.setVariable("WorkflowResponse", "<vfModuleDeleted></vfModuleDeleted>");
211 vnfAdapterImpl.postProcessVnfAdapter(execution);
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());
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));
228 vnfAdapterImpl.preProcessVnfAdapter(execution);
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());
239 public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
240 expectedException.expect(BpmnError.class);
241 execution.setVariable("WorkflowResponse", "<createVolumeGroupResponse></createVolumeGroupResponse>");
242 vnfAdapterImpl.postProcessVnfAdapter(execution);
243 assertNull(volumeGroup.getHeatStackId());
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());
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());
265 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
266 expectedException.expect(BpmnError.class);
267 execution.setVariable("WorkflowResponse", "<volumeGroupDeleted></volumeGroupDeleted>");
268 vnfAdapterImpl.postProcessVnfAdapter(execution);
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());
280 public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
281 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
282 ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
284 execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
285 expectedException.expect(BpmnError.class);
287 vnfAdapterImpl.postProcessVnfAdapter(execution);