b515835f19156284d91d36962cd9a723a5019e2d
[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.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
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;
47
48 public class VnfAdapterImplTest extends BaseTaskTest {
49         
50         @InjectMocks
51         private VnfAdapterImpl vnfAdapterImpl = new VnfAdapterImpl();
52
53         private RequestContext requestContext;
54         private ServiceInstance serviceInstance;
55         private GenericVnf genericVnf;
56         private VfModule vfModule;
57     private VolumeGroup volumeGroup;
58         
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";
69
70         @Before
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);
85         }
86
87         @Test
88         public void preProcessVnfAdapterTest() {
89                 vnfAdapterImpl.preProcessVnfAdapter(execution);
90
91                 assertEquals(requestContext.getMsoRequestId(), execution.getVariable("mso-request-id"));
92                 assertEquals(serviceInstance.getServiceInstanceId(), execution.getVariable("mso-service-instance-id"));
93         }
94
95         @Test
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"));               
107         }
108         
109
110         @Test
111         public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
112         expectedException.expect(BpmnError.class);
113                 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleStackId></vfModuleStackId>");
114                 vnfAdapterImpl.postProcessVnfAdapter(execution);
115         }
116         
117         @Test
118         public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
119                 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse></createVfModuleResponse>");
120                 vnfAdapterImpl.postProcessVnfAdapter(execution);
121                 assertNull(vfModule.getHeatStackId());
122         }
123         
124         @Test
125         public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
126                 execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
127                 vnfAdapterImpl.postProcessVnfAdapter(execution);
128                 assertNull(vfModule.getHeatStackId());
129         }
130         
131         @Test
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"));
143         }
144
145         @Test
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"));
158         }
159         
160         @Test
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"));
170         }
171         
172         @Test
173         public void postProcessVnfAdapter_ResponseNullTest() {          
174                 execution.setVariable("vnfAdapterRestV1Response", null);
175                 vnfAdapterImpl.postProcessVnfAdapter(execution);
176                 assertNull(vfModule.getHeatStackId());
177         }
178         
179         @Test
180         public void postProcessVnfAdapter_ResponseEmptyTest() {
181         execution.setVariable("vnfAdapterRestV1Response", "");
182                 vnfAdapterImpl.postProcessVnfAdapter(execution);
183         assertNull(vfModule.getHeatStackId());
184         }
185         
186         @Test
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());
192         }
193         
194         @Test
195         public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
196         expectedException.expect(BpmnError.class);
197                 execution.setVariable("vnfAdapterRestV1Response", "<vfModuleDeleted></vfModuleDeleted>");
198                 vnfAdapterImpl.postProcessVnfAdapter(execution);
199         }
200         
201         @Test
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());
207         }
208
209         @Test
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));
213                 
214                 vnfAdapterImpl.preProcessVnfAdapter(execution);
215         }
216
217     @Test
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());
222     }
223
224     @Test
225     public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest()  {
226         expectedException.expect(BpmnError.class);
227         execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
228         vnfAdapterImpl.postProcessVnfAdapter(execution);
229         assertNull(volumeGroup.getHeatStackId());
230     }
231     
232     @Test
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());
238         }
239         
240     
241     @Test
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());           
247         }
248         
249         @Test
250         public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
251         expectedException.expect(BpmnError.class);
252                 execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
253                 vnfAdapterImpl.postProcessVnfAdapter(execution);        
254         }
255         
256         @Test
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());
262         }
263
264         @Test
265         public void postProcessVnfAdapterExceptionTest() throws BBObjectNotFoundException {     
266                 doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
267
268                 execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
269                 expectedException.expect(BpmnError.class);
270                 
271                 vnfAdapterImpl.postProcessVnfAdapter(execution);
272         }
273 }