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.junit.runner.RunWith;
34 import org.mockito.ArgumentMatchers;
35 import org.mockito.InjectMocks;
36 import org.mockito.Mock;
37 import org.mockito.junit.MockitoJUnitRunner;
38 import org.onap.so.FileUtil;
39 import org.onap.so.bpmn.common.BuildingBlockExecution;
40 import org.onap.so.bpmn.common.data.TestDataSetup;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
45 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
46 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
47 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
48 import org.onap.so.client.exception.BBObjectNotFoundException;
49 import org.onap.so.client.exception.ExceptionBuilder;
51 @RunWith(MockitoJUnitRunner.Silent.class)
52 public class VnfAdapterImplTest extends TestDataSetup {
54 protected ExceptionBuilder exceptionUtil;
56 protected ExtractPojosForBB extractPojosForBB;
58 private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
60 private RequestContext requestContext;
61 private ServiceInstance serviceInstance;
62 private GenericVnf genericVnf;
63 private VfModule vfModule;
64 private VolumeGroup volumeGroup;
66 private static final String VNF_ADAPTER_REST_DELETE_RESPONSE =
67 FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
68 private static final String VNF_ADAPTER_REST_CREATE_RESPONSE =
69 FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
70 private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE =
71 FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
72 private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE =
73 FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
74 private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
75 private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
76 private static final String TEST_CONTRAIL_SERVICE_INSTANCE_FQDN = "default-domain:MSOTest:MsoNW-RA";
77 private static final String TEST_OAM_MANAGEMENT_V4_ADDRESS = "127.0.0.1";
78 private static final String TEST_OAM_MANAGEMENT_V6_ADDRESS = "2000:abc:bce:1111";
79 private static final String TEST_CONTRAIL_NETWORK_POLICY_FQDNS =
80 "MSOTest:DefaultPolicyFQDN2,MSOTest:DefaultPolicyFQDN1";
83 public void before() throws BBObjectNotFoundException {
84 requestContext = setRequestContext();
85 serviceInstance = setServiceInstance();
86 genericVnf = setGenericVnf();
87 vfModule = setVfModule();
88 volumeGroup = setVolumeGroup();
89 vfModule.setHeatStackId(null);
90 volumeGroup.setHeatStackId(null);
91 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
92 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
93 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
94 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
95 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
96 .thenReturn(serviceInstance);
97 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
98 .thenReturn(volumeGroup);
99 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
100 .thenReturn(genericVnf);
101 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
105 public void preProcessVnfAdapterTest() {
106 vnfAdapterImpl.preProcessVnfAdapter(execution);
108 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
109 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
113 public void postProcessVnfAdapter_CreateResponseTest() {
114 execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
115 vnfAdapterImpl.postProcessVnfAdapter(execution);
116 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
117 assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, vfModule.getContrailServiceInstanceFqdn());
118 assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, execution.getVariable("contrailServiceInstanceFqdn"));
119 assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
120 assertEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, execution.getVariable("oamManagementV4Address"));
121 assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, genericVnf.getManagementV6Address());
122 assertEquals(TEST_OAM_MANAGEMENT_V6_ADDRESS, execution.getVariable("oamManagementV6Address"));
123 assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
128 public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
129 expectedException.expect(BpmnError.class);
130 execution.setVariable("WorkflowResponse", "<vfModuleStackId></vfModuleStackId>");
131 vnfAdapterImpl.postProcessVnfAdapter(execution);
135 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
136 execution.setVariable("WorkflowResponse", "<createVfModuleResponse></createVfModuleResponse>");
137 vnfAdapterImpl.postProcessVnfAdapter(execution);
138 assertNull(vfModule.getHeatStackId());
142 public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
143 execution.setVariable("WorkflowResponse",
144 "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
145 vnfAdapterImpl.postProcessVnfAdapter(execution);
146 assertNull(vfModule.getHeatStackId());
150 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleOutputs() {
151 execution.setVariable("WorkflowResponse",
152 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
153 vnfAdapterImpl.postProcessVnfAdapter(execution);
154 assertNull(vfModule.getHeatStackId());
155 assertNull(vfModule.getContrailServiceInstanceFqdn());
156 assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
157 assertNotEquals(TEST_OAM_MANAGEMENT_V4_ADDRESS, genericVnf.getIpv4OamAddress());
158 assertNull(execution.getVariable("oamManagementV4Address"));
159 assertNull(genericVnf.getManagementV6Address());
160 assertNull(execution.getVariable("oamManagementV6Address"));
161 assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
165 public void postProcessVnfAdapter_DeleteResponseTest() {
166 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
167 execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_DELETE_RESPONSE);
168 vnfAdapterImpl.postProcessVnfAdapter(execution);
169 assertNull(vfModule.getHeatStackId());
170 assertEquals("", vfModule.getContrailServiceInstanceFqdn());
171 assertEquals("", execution.getVariable("contrailServiceInstanceFqdn"));
172 assertEquals("", genericVnf.getIpv4OamAddress());
173 assertEquals("", execution.getVariable("oamManagementV4Address"));
174 assertEquals("", genericVnf.getManagementV6Address());
175 assertEquals("", execution.getVariable("oamManagementV6Address"));
176 assertEquals(TEST_CONTRAIL_NETWORK_POLICY_FQDNS, execution.getVariable("contrailNetworkPolicyFqdnList"));
180 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleOutputs() {
181 execution.setVariable("WorkflowResponse",
182 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
183 vnfAdapterImpl.postProcessVnfAdapter(execution);
184 assertNull(vfModule.getHeatStackId());
185 assertNull(vfModule.getContrailServiceInstanceFqdn());
186 assertNull(execution.getVariable("contrailServiceInstanceFqdn"));
187 assertNull(execution.getVariable("oamManagementV4Address"));
188 assertNull(execution.getVariable("oamManagementV6Address"));
189 assertNull(execution.getVariable("contrailNetworkPolicyFqdnList"));
193 public void postProcessVnfAdapter_ResponseNullTest() {
194 execution.setVariable("WorkflowResponse", null);
195 vnfAdapterImpl.postProcessVnfAdapter(execution);
196 assertNull(vfModule.getHeatStackId());
200 public void postProcessVnfAdapter_ResponseEmptyTest() {
201 execution.setVariable("WorkflowResponse", "");
202 vnfAdapterImpl.postProcessVnfAdapter(execution);
203 assertNull(vfModule.getHeatStackId());
207 public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
208 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
209 execution.setVariable("WorkflowResponse",
210 "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
211 vnfAdapterImpl.postProcessVnfAdapter(execution);
212 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
216 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
217 expectedException.expect(BpmnError.class);
218 execution.setVariable("WorkflowResponse", "<vfModuleDeleted></vfModuleDeleted>");
219 vnfAdapterImpl.postProcessVnfAdapter(execution);
223 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
224 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
225 execution.setVariable("WorkflowResponse", "<deleteVfModuleResponse></deleteVfModuleResponse>");
226 vnfAdapterImpl.postProcessVnfAdapter(execution);
227 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
231 public void preProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
232 expectedException.expect(BpmnError.class);
233 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
234 ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID));
236 vnfAdapterImpl.preProcessVnfAdapter(execution);
240 public void postProcessVnfAdapter_CreateVolumeResponseTest() {
241 execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
242 vnfAdapterImpl.postProcessVnfAdapter(execution);
243 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
247 public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
248 expectedException.expect(BpmnError.class);
249 execution.setVariable("WorkflowResponse", "<createVolumeGroupResponse></createVolumeGroupResponse>");
250 vnfAdapterImpl.postProcessVnfAdapter(execution);
251 assertNull(volumeGroup.getHeatStackId());
255 public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
256 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
257 execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
258 vnfAdapterImpl.postProcessVnfAdapter(execution);
259 assertNull(volumeGroup.getHeatStackId());
264 public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
265 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
266 execution.setVariable("WorkflowResponse",
267 "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
268 vnfAdapterImpl.postProcessVnfAdapter(execution);
269 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
273 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
274 expectedException.expect(BpmnError.class);
275 execution.setVariable("WorkflowResponse", "<volumeGroupDeleted></volumeGroupDeleted>");
276 vnfAdapterImpl.postProcessVnfAdapter(execution);
280 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
281 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
282 execution.setVariable("WorkflowResponse", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
283 vnfAdapterImpl.postProcessVnfAdapter(execution);
284 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
288 public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
289 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
290 ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
292 execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
293 expectedException.expect(BpmnError.class);
295 vnfAdapterImpl.postProcessVnfAdapter(execution);