Springboot 2.0 upgrade
[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.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;
29
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;
45
46 public class VnfAdapterImplTest extends BaseTaskTest {
47         
48         @InjectMocks
49         private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
50
51         private RequestContext requestContext;
52         private ServiceInstance serviceInstance;
53         private VfModule vfModule;
54     private VolumeGroup volumeGroup;
55         
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";   
62
63         @Before
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);
76         }
77
78         @Test
79         public void preProcessVnfAdapterTest() {
80                 vnfAdapterImpl.preProcessVnfAdapter(execution);
81
82                 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
83                 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
84         }
85
86         @Test
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());
91         }
92         
93
94         @Test
95         public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
96         expectedException.expect(BpmnError.class);
97                 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleStackId></vfModuleStackId>");
98                 vnfAdapterImpl.postProcessVnfAdapter(execution);
99         }
100         
101         @Test
102         public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
103                 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse></createVfModuleResponse>");
104                 vnfAdapterImpl.postProcessVnfAdapter(execution);
105                 assertNull(vfModule.getHeatStackId());
106         }
107         
108         @Test
109         public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
110                 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
111                 vnfAdapterImpl.postProcessVnfAdapter(execution);
112                 assertNull(vfModule.getHeatStackId());
113         }
114
115         @Test
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());
121         }
122         
123         @Test
124         public void postProcessVnfAdapter_ResponseNullTest() {          
125                 execution.setVariable("vnfAdapterRestV1Response", null);
126                 vnfAdapterImpl.postProcessVnfAdapter(execution);
127                 assertNull(vfModule.getHeatStackId());
128         }
129         
130         @Test
131         public void postProcessVnfAdapter_ResponseEmptyTest() {
132         execution.setVariable("vnfAdapterRestV1Response", "");
133                 vnfAdapterImpl.postProcessVnfAdapter(execution);
134         assertNull(vfModule.getHeatStackId());
135         }
136         
137         @Test
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());
143         }
144         
145         @Test
146         public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
147         expectedException.expect(BpmnError.class);
148                 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleDeleted></vfModuleDeleted>");
149                 vnfAdapterImpl.postProcessVnfAdapter(execution);
150         }
151         
152         @Test
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());
158         }
159
160         @Test
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());
164                 
165                 vnfAdapterImpl.preProcessVnfAdapter(execution);
166         }
167
168     @Test
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());
173     }
174
175     @Test
176     public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest()  {
177         expectedException.expect(BpmnError.class);
178         execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
179         vnfAdapterImpl.postProcessVnfAdapter(execution);
180         assertNull(volumeGroup.getHeatStackId());
181     }
182     
183     @Test
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());
189         }
190         
191     
192     @Test
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());           
198         }
199         
200         @Test
201         public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
202         expectedException.expect(BpmnError.class);
203                 execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
204                 vnfAdapterImpl.postProcessVnfAdapter(execution);        
205         }
206         
207         @Test
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());
213         }
214
215         @Test
216         public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {     
217                 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any());
218
219                 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
220                 expectedException.expect(BpmnError.class);
221                 
222                 vnfAdapterImpl.postProcessVnfAdapter(execution);
223         }
224 }