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.assertNull;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.eq;
27 import static org.mockito.Mockito.doThrow;
28 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.ServiceInstance;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
41 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
42 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
43 import org.onap.so.client.exception.BBObjectNotFoundException;
44 import org.springframework.beans.factory.annotation.Autowired;
46 public class VnfAdapterImplTest extends BaseTaskTest {
49 private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
51 private RequestContext requestContext;
52 private ServiceInstance serviceInstance;
53 private VfModule vfModule;
54 private VolumeGroup volumeGroup;
56 private static final String VNF_ADAPTER_REST_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
57 private static final String VNF_ADAPTER_REST_CREATE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
58 private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
59 private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
60 private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
61 private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
64 public void before() throws BBObjectNotFoundException {
65 requestContext = setRequestContext();
66 serviceInstance = setServiceInstance();
67 vfModule = setVfModule();
68 volumeGroup = setVolumeGroup();
69 vfModule.setHeatStackId(null);
70 volumeGroup.setHeatStackId(null);
71 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
72 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
73 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
74 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
75 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
79 public void preProcessVnfAdapterTest() {
80 vnfAdapterImpl.preProcessVnfAdapter(execution);
82 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
83 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
87 public void postProcessVnfAdapter_CreateResponseTest() {
88 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
89 vnfAdapterImpl.postProcessVnfAdapter(execution);
90 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
95 public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
96 expectedException.expect(BpmnError.class);
97 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleStackId></vfModuleStackId>");
98 vnfAdapterImpl.postProcessVnfAdapter(execution);
102 public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
103 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse></createVfModuleResponse>");
104 vnfAdapterImpl.postProcessVnfAdapter(execution);
105 assertNull(vfModule.getHeatStackId());
109 public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
110 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
111 vnfAdapterImpl.postProcessVnfAdapter(execution);
112 assertNull(vfModule.getHeatStackId());
116 public void postProcessVnfAdapter_DeleteResponseTest() {
117 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
118 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_DELETE_RESPONSE);
119 vnfAdapterImpl.postProcessVnfAdapter(execution);
120 assertNull(vfModule.getHeatStackId());
124 public void postProcessVnfAdapter_ResponseNullTest() {
125 execution.setVariable("vnfAdapterRestV1Response", null);
126 vnfAdapterImpl.postProcessVnfAdapter(execution);
127 assertNull(vfModule.getHeatStackId());
131 public void postProcessVnfAdapter_ResponseEmptyTest() {
132 execution.setVariable("vnfAdapterRestV1Response", "");
133 vnfAdapterImpl.postProcessVnfAdapter(execution);
134 assertNull(vfModule.getHeatStackId());
138 public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
139 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
140 execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
141 vnfAdapterImpl.postProcessVnfAdapter(execution);
142 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
146 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
147 expectedException.expect(BpmnError.class);
148 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleDeleted></vfModuleDeleted>");
149 vnfAdapterImpl.postProcessVnfAdapter(execution);
153 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
154 vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
155 execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse></deleteVfModuleResponse>");
156 vnfAdapterImpl.postProcessVnfAdapter(execution);
157 assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
161 public void preProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
162 expectedException.expect(BpmnError.class);
163 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any());
165 vnfAdapterImpl.preProcessVnfAdapter(execution);
169 public void postProcessVnfAdapter_CreateVolumeResponseTest() {
170 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
171 vnfAdapterImpl.postProcessVnfAdapter(execution);
172 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
176 public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
177 expectedException.expect(BpmnError.class);
178 execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
179 vnfAdapterImpl.postProcessVnfAdapter(execution);
180 assertNull(volumeGroup.getHeatStackId());
184 public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
185 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
186 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
187 vnfAdapterImpl.postProcessVnfAdapter(execution);
188 assertNull(volumeGroup.getHeatStackId());
193 public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
194 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
195 execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
196 vnfAdapterImpl.postProcessVnfAdapter(execution);
197 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
201 public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
202 expectedException.expect(BpmnError.class);
203 execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
204 vnfAdapterImpl.postProcessVnfAdapter(execution);
208 public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
209 volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
210 execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
211 vnfAdapterImpl.postProcessVnfAdapter(execution);
212 assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
216 public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {
217 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any());
219 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
220 expectedException.expect(BpmnError.class);
222 vnfAdapterImpl.postProcessVnfAdapter(execution);