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;
31 import org.camunda.bpm.engine.delegate.BpmnError;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.mockito.ArgumentMatchers;
35 import org.mockito.InjectMocks;
36 import org.onap.so.FileUtil;
37 import org.onap.so.bpmn.BaseTaskTest;
38 import org.onap.so.bpmn.common.BuildingBlockExecution;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
43 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
44 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
45 import org.onap.so.client.exception.BBObjectNotFoundException;
46 import org.springframework.beans.factory.annotation.Autowired;
48 public class VnfAdapterImplTest extends BaseTaskTest {
51 private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
53 private RequestContext requestContext;
54 private ServiceInstance serviceInstance;
55 private GenericVnf genericVnf;
56 private VfModule vfModule;
57 private VolumeGroup volumeGroup;
59 private static final String VNF_ADAPTER_REST_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
60 private static final String VNF_ADAPTER_REST_CREATE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
61 private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
62 private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
63 private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
64 private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
65 private static final String TEST_CONTRAIL_SERVICE_INSTANCE_FQDN = "default-domain:MSOTest:MsoNW-RA";
66 private static final String TEST_OAM_MANAGEMENT_V4_ADDRESS = "127.0.0.1";
67 private static final String TEST_OAM_MANAGEMENT_V6_ADDRESS = "2000:abc:bce:1111";
68 private static final String TEST_CONTRAIL_NETWORK_POLICY_FQDNS = "MSOTest:DefaultPolicyFQDN2,MSOTest:DefaultPolicyFQDN1";
71 public void before() throws BBObjectNotFoundException {
72 requestContext = setRequestContext();
73 serviceInstance = setServiceInstance();
74 genericVnf = setGenericVnf();
75 vfModule = setVfModule();
76 volumeGroup = setVolumeGroup();
77 vfModule.setHeatStackId(null);
78 volumeGroup.setHeatStackId(null);
79 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
80 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
81 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
82 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
83 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
84 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
88 public void preProcessVnfAdapterTest() {
89 vnfAdapterImpl.preProcessVnfAdapter(execution);
91 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
92 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
96 public void postProcessVnfAdapter_CreateResponseTest() {
97 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
98 vnfAdapterImpl.postProcessVnfAdapter(execution);
99 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
100 assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, vfModule.getContrailServiceInstanceFqdn());
101 assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, execution.getVariable("contrailServiceInstanceFqdn"));
102 assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
103 assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, execution.getVariable("oamManagementV4Address"));
104 assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, genericVnf.getManagementV6Address());
105 assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, execution.getVariable("oamManagementV6Address"));
106 assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
111 public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
112 expectedException.expect(BpmnError.class);
113 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleStackId></vfModuleStackId>");
114 vnfAdapterImpl.postProcessVnfAdapter(execution);
118 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
119 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse></createVfModuleResponse>");
120 vnfAdapterImpl.postProcessVnfAdapter(execution);
121 assertNull(vfModule.getHeatStackId());
125 public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
126 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
127 vnfAdapterImpl.postProcessVnfAdapter(execution);
128 assertNull(vfModule.getHeatStackId());
132 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleOutputs() {
133 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
134 vnfAdapterImpl.postProcessVnfAdapter(execution);
135 assertNull(vfModule.getHeatStackId());
136 assertNull(vfModule.getContrailServiceInstanceFqdn());
137 assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
138 assertNotEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
139 assertNull(execution.getVariable("oamManagementV4Address"));
140 assertNull(genericVnf.getManagementV6Address());
141 assertNull(execution.getVariable("oamManagementV6Address"));
142 assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
146 public void postProcessVnfAdapter_DeleteResponseTest() {
147 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
148 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_DELETE_RESPONSE);
149 vnfAdapterImpl.postProcessVnfAdapter(execution);
150 assertNull(vfModule.getHeatStackId());
151 assertEquals(vfModule.getContrailServiceInstanceFqdn(), "");
152 assertEquals(execution.getVariable("contrailServiceInstanceFqdn"), "");
153 assertEquals(genericVnf.getIpv4OamAddress(), "");
154 assertEquals(execution.getVariable("oamManagementV4Address"), "");
155 assertEquals(genericVnf.getManagementV6Address(), "");
156 assertEquals(execution.getVariable("oamManagementV6Address"), "");
157 assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
161 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleOutputs() {
162 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
163 vnfAdapterImpl.postProcessVnfAdapter(execution);
164 assertNull(vfModule.getHeatStackId());
165 assertNull(vfModule.getContrailServiceInstanceFqdn());
166 assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
167 assertNull(execution.getVariable("oamManagementV4Address"));
168 assertNull(execution.getVariable("oamManagementV6Address"));
169 assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
173 public void postProcessVnfAdapter_ResponseNullTest() {
174 execution.setVariable("vnfAdapterRestV1Response", null);
175 vnfAdapterImpl.postProcessVnfAdapter(execution);
176 assertNull(vfModule.getHeatStackId());
180 public void postProcessVnfAdapter_ResponseEmptyTest() {
181 execution.setVariable("vnfAdapterRestV1Response", "");
182 vnfAdapterImpl.postProcessVnfAdapter(execution);
183 assertNull(vfModule.getHeatStackId());
187 public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
188 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
189 execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
190 vnfAdapterImpl.postProcessVnfAdapter(execution);
191 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
195 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
196 expectedException.expect(BpmnError.class);
197 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleDeleted></vfModuleDeleted>");
198 vnfAdapterImpl.postProcessVnfAdapter(execution);
202 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
203 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
204 execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse></deleteVfModuleResponse>");
205 vnfAdapterImpl.postProcessVnfAdapter(execution);
206 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
210 public void preProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
211 expectedException.expect(BpmnError.class);
212 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID));
214 vnfAdapterImpl.preProcessVnfAdapter(execution);
218 public void postProcessVnfAdapter_CreateVolumeResponseTest() {
219 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
220 vnfAdapterImpl.postProcessVnfAdapter(execution);
221 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
225 public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
226 expectedException.expect(BpmnError.class);
227 execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
228 vnfAdapterImpl.postProcessVnfAdapter(execution);
229 assertNull(volumeGroup.getHeatStackId());
233 public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
234 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
235 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
236 vnfAdapterImpl.postProcessVnfAdapter(execution);
237 assertNull(volumeGroup.getHeatStackId());
242 public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
243 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
244 execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
245 vnfAdapterImpl.postProcessVnfAdapter(execution);
246 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
250 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
251 expectedException.expect(BpmnError.class);
252 execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
253 vnfAdapterImpl.postProcessVnfAdapter(execution);
257 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
258 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
259 execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
260 vnfAdapterImpl.postProcessVnfAdapter(execution);
261 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
265 public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
266 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
268 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
269 expectedException.expect(BpmnError.class);
271 vnfAdapterImpl.postProcessVnfAdapter(execution);