2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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=========================================================
20 package org.onap.so.bpmn.infrastructure.aai.tasks;
22 import static org.mockito.ArgumentMatchers.any;
23 import static org.mockito.ArgumentMatchers.eq;
24 import static org.mockito.Mockito.doNothing;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.doThrow;
27 import static org.mockito.Mockito.never;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
32 import org.camunda.bpm.engine.delegate.BpmnError;
33 import org.junit.Before;
34 import org.junit.Rule;
35 import org.junit.Test;
36 import org.junit.rules.ExpectedException;
37 import org.mockito.ArgumentMatchers;
38 import org.mockito.InjectMocks;
39 import org.onap.so.bpmn.BaseTaskTest;
40 import org.onap.so.bpmn.common.BuildingBlockExecution;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
49 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
50 import org.onap.so.client.exception.BBObjectNotFoundException;
51 import org.onap.so.db.catalog.beans.OrchestrationStatus;
53 public class AAICreateTasksTest extends BaseTaskTest{
56 private AAICreateTasks aaiCreateTasks = new AAICreateTasks();
59 private ServiceInstance serviceInstance;
60 private L3Network network;
61 private GenericVnf genericVnf;
62 private VolumeGroup volumeGroup;
63 private CloudRegion cloudRegion;
64 private VfModule vfModule;
65 private Customer customer;
66 private Configuration configuration;
69 public final ExpectedException exception = ExpectedException.none();
72 public void before() throws BBObjectNotFoundException {
73 customer = setCustomer();
74 serviceInstance = setServiceInstance();
75 network = setL3Network();
76 genericVnf = setGenericVnf();
77 volumeGroup = setVolumeGroup();
78 cloudRegion = setCloudRegion();
79 vfModule = setVfModule();
80 configuration = setConfiguration();
82 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
83 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
84 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID), any())).thenReturn(network);
85 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID), any())).thenReturn(volumeGroup);
86 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
87 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID), any())).thenReturn(configuration);
90 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
91 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
96 public void createServiceInstanceTest() throws Exception {
97 doNothing().when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
98 aaiCreateTasks.createServiceInstance(execution);
99 verify(aaiServiceInstanceResources, times(1)).createServiceInstance(serviceInstance, customer);
103 public void createServiceInstanceExceptionTest() throws Exception {
104 expectedException.expect(BpmnError.class);
106 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
107 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
108 aaiCreateTasks.createServiceInstance(execution);
112 public void createVolumeGroupTest() throws Exception {
113 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
115 doNothing().when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
116 doNothing().when(aaiVolumeGroupResources).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
118 aaiCreateTasks.createVolumeGroup(execution);
120 verify(aaiVolumeGroupResources, times(1)).createVolumeGroup(volumeGroup, cloudRegion);
121 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
122 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToTenant(volumeGroup, cloudRegion);
126 public void createVolumeGroupExceptionTest() throws Exception {
127 expectedException.expect(BpmnError.class);
129 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
131 doThrow(RuntimeException.class).when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
133 aaiCreateTasks.createVolumeGroup(execution);
137 public void createProjectTest() throws Exception {
138 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
139 aaiCreateTasks.createProject(execution);
140 verify(aaiServiceInstanceResources, times(1)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
144 public void createPlatformTest() throws Exception {
145 doNothing().when(aaiVnfResources).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
146 aaiCreateTasks.createPlatform(execution);
147 verify(aaiVnfResources, times(1)).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
151 public void createLineOfBusinessTest() throws Exception {
152 doNothing().when(aaiVnfResources).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
153 aaiCreateTasks.createLineOfBusiness(execution);
154 verify(aaiVnfResources, times(1)).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
158 public void createProjectExceptionTest() throws Exception {
159 expectedException.expect(BpmnError.class);
161 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
162 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
163 aaiCreateTasks.createProject(execution);
167 public void createProjectNullProjectNameTest() throws Exception {
168 serviceInstance.getProject().setProjectName(null);
169 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
170 aaiCreateTasks.createProject(execution);
171 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
175 public void createProjectEmptyProjectNameTest() throws Exception {
176 serviceInstance.getProject().setProjectName("");
177 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
178 aaiCreateTasks.createProject(execution);
179 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
183 public void createOwningEntityTest() throws Exception {
184 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
185 doNothing().when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
186 aaiCreateTasks.createOwningEntity(execution);
187 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
188 verify(aaiServiceInstanceResources, times(1)).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
192 public void createOwningEntityNotExistsOwningEntityTest() throws Exception {
193 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
194 doNothing().when(aaiServiceInstanceResources).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
195 aaiCreateTasks.createOwningEntity(execution);
196 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
197 verify(aaiServiceInstanceResources, times(1)).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
201 public void createOwningEntityNullOwningEntityIdTest() throws Exception {
202 expectedException.expect(BpmnError.class);
204 serviceInstance.getOwningEntity().setOwningEntityId(null);
206 aaiCreateTasks.createOwningEntity(execution);
210 public void createOwningEntityEmptyOwningEntityIdTest() throws Exception {
211 expectedException.expect(BpmnError.class);
213 serviceInstance.getOwningEntity().setOwningEntityId("");
215 aaiCreateTasks.createOwningEntity(execution);
219 public void createOwningEntityNullOwningEntityNameTest() throws Exception {
220 expectedException.expect(BpmnError.class);
222 serviceInstance.getOwningEntity().setOwningEntityName(null);
224 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
226 aaiCreateTasks.createOwningEntity(execution);
230 public void createOwningEntityEmptyOwningEntityNameTest() throws Exception {
231 expectedException.expect(BpmnError.class);
233 serviceInstance.getOwningEntity().setOwningEntityName("");
235 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
237 aaiCreateTasks.createOwningEntity(execution);
241 public void createOwningEntityExceptionTest() throws Exception {
242 expectedException.expect(BpmnError.class);
244 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
246 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
248 aaiCreateTasks.createOwningEntity(execution);
252 public void createVnfTest() throws Exception {
253 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
254 aaiCreateTasks.createVnf(execution);
255 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
259 public void createVnfExceptionTest() throws Exception {
260 expectedException.expect(BpmnError.class);
261 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "notfound");
262 doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID),eq("notfound"));
263 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
264 aaiCreateTasks.createVnf(execution);
265 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
270 public void createVfModuleTest() throws Exception {
271 doNothing().when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
272 aaiCreateTasks.createVfModule(execution);
273 verify(aaiVfModuleResources, times(1)).createVfModule(vfModule, genericVnf);
277 public void createServiceSubscriptionTest(){
278 doNothing().when(aaiServiceInstanceResources).createServiceSubscription(customer);
279 aaiCreateTasks.createServiceSubscription(execution);
280 verify(aaiServiceInstanceResources, times(1)).createServiceSubscription(customer);
284 public void createServiceSubscriptionTestExceptionHandling(){
285 expectedException.expect(BpmnError.class);
286 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceSubscription(customer);
287 aaiCreateTasks.createServiceSubscription(execution);
291 public void createServiceSubscriptionTestCustomerIsNull(){
292 expectedException.expect(BpmnError.class);
293 gBBInput.setCustomer(null);
294 aaiCreateTasks.createServiceSubscription(execution);
298 public void createVfModuleExceptionTest() throws Exception {
299 expectedException.expect(BpmnError.class);
301 doThrow(RuntimeException.class).when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
302 aaiCreateTasks.createVfModule(execution);
306 public void connectVfModuleToVolumeGroupTest() throws Exception {
307 doNothing().when(aaiVfModuleResources).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
308 aaiCreateTasks.connectVfModuleToVolumeGroup(execution);
309 verify(aaiVfModuleResources, times(1)).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
313 public void createNetworkTest() throws Exception {
314 network.getModelInfoNetwork().setNeutronNetworkType("PROVIDER");
316 doNothing().when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
317 aaiCreateTasks.createNetwork(execution);
318 verify(aaiNetworkResources, times(1)).createNetworkConnectToServiceInstance(network, serviceInstance);
322 public void createNetworkExceptionTest() throws Exception {
323 expectedException.expect(BpmnError.class);
325 lookupKeyMap.put(ResourceKey.NETWORK_ID, "notfound");
326 doThrow(RuntimeException.class).when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
327 aaiCreateTasks.createNetwork(execution);
331 public void createCustomerTest() throws Exception {
332 doNothing().when(aaiVpnBindingResources).createCustomer(customer);
334 aaiCreateTasks.createCustomer(execution);
336 verify(aaiVpnBindingResources, times(1)).createCustomer(customer);
340 public void createCustomerExceptionTest() throws Exception {
341 expectedException.expect(BpmnError.class);
343 doThrow(RuntimeException.class).when(aaiVpnBindingResources).createCustomer(customer);
345 aaiCreateTasks.createCustomer(execution);
349 public void createNetworkCollectionTest() throws Exception {
350 doNothing().when(aaiNetworkResources).createNetworkCollection(serviceInstance.getCollection());
351 execution.setVariable("networkCollectionName", "testNetworkCollectionName");
352 aaiCreateTasks.createNetworkCollection(execution);
353 verify(aaiNetworkResources, times(1)).createNetworkCollection(serviceInstance.getCollection());
357 public void createNetworkCollectionInstanceGroupTest() throws Exception {
358 doNothing().when(aaiNetworkResources).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
359 aaiCreateTasks.createNetworkCollectionInstanceGroup(execution);
360 verify(aaiNetworkResources, times(1)).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
364 public void connectNetworkToNetworkCollectionServiceInstanceTest() throws Exception {
365 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
366 aaiCreateTasks.connectNetworkToNetworkCollectionServiceInstance(execution);
367 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
371 public void connectNetworkToNetworkCollectionInstanceGroupTest() throws Exception {
372 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
373 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
374 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
378 public void connectNetworkToNullNetworkCollectionInstanceGroupTest() throws Exception {
379 //reset test data to have no network collection instance group
380 ServiceInstance serviceInstance = new ServiceInstance();
381 serviceInstance.setServiceInstanceId("testServiceInstanceId");
382 L3Network network = new L3Network();
383 network.setNetworkId("testNetworkId");
384 serviceInstance.getNetworks().add(network);
385 lookupKeyMap.put(ResourceKey.NETWORK_ID, network.getNetworkId());
386 gBBInput.setServiceInstance(serviceInstance);
387 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
389 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), eq("testServiceInstanceId"))).thenReturn(serviceInstance);
390 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID),eq("testNetworkId"))).thenReturn(serviceInstance);
391 //verify connection call was not executednetwork
392 exception.expect(BpmnError.class);
393 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
394 verify(aaiNetworkResources, never()).connectNetworkToNetworkCollectionInstanceGroup(network, null);
398 public void connectNetworkToCloudRegionTest() throws Exception {
399 gBBInput = execution.getGeneralBuildingBlock();
400 doNothing().when(aaiNetworkResources).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
401 aaiCreateTasks.connectNetworkToCloudRegion(execution);
402 verify(aaiNetworkResources, times(1)).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
406 public void connectNetworkToTenantTest() throws Exception {
407 gBBInput = execution.getGeneralBuildingBlock();
408 doNothing().when(aaiNetworkResources).connectNetworkToTenant(network, gBBInput.getCloudRegion());
409 aaiCreateTasks.connectNetworkToTenant(execution);
410 verify(aaiNetworkResources, times(1)).connectNetworkToTenant(network, gBBInput.getCloudRegion());
414 public void createConfigurationTest() throws Exception {
415 gBBInput = execution.getGeneralBuildingBlock();
416 doNothing().when(aaiConfigurationResources).createConfiguration(configuration);
417 aaiCreateTasks.createConfiguration(execution);
418 verify(aaiConfigurationResources, times(1)).createConfiguration(configuration);