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.Mockito.doNothing;
23 import static org.mockito.Mockito.doReturn;
24 import static org.mockito.Mockito.doThrow;
25 import static org.mockito.Mockito.never;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
29 import org.camunda.bpm.engine.delegate.BpmnError;
30 import org.junit.Before;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.onap.so.bpmn.BaseTaskTest;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
37 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
38 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
42 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
43 import org.onap.so.db.catalog.beans.OrchestrationStatus;
44 import org.springframework.beans.factory.annotation.Autowired;
46 public class AAICreateTasksTest extends BaseTaskTest{
48 private AAICreateTasks aaiCreateTasks;
50 private ServiceInstance serviceInstance;
51 private L3Network network;
52 private GenericVnf genericVnf;
53 private VolumeGroup volumeGroup;
54 private CloudRegion cloudRegion;
55 private VfModule vfModule;
56 private Customer customer;
59 public final ExpectedException exception = ExpectedException.none();
62 public void before() {
63 customer = setCustomer();
64 serviceInstance = setServiceInstance();
65 network = setL3Network();
66 genericVnf = setGenericVnf();
67 volumeGroup = setVolumeGroup();
68 cloudRegion = setCloudRegion();
69 vfModule = setVfModule();
74 public void createServiceInstanceTest() throws Exception {
75 doNothing().when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
76 aaiCreateTasks.createServiceInstance(execution);
77 verify(aaiServiceInstanceResources, times(1)).createServiceInstance(serviceInstance, customer);
81 public void createServiceInstanceExceptionTest() throws Exception {
82 expectedException.expect(BpmnError.class);
84 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
85 doThrow(Exception.class).when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
86 aaiCreateTasks.createServiceInstance(execution);
90 public void createVolumeGroupTest() throws Exception {
91 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
93 doNothing().when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
94 doNothing().when(aaiVolumeGroupResources).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
96 aaiCreateTasks.createVolumeGroup(execution);
98 verify(aaiVolumeGroupResources, times(1)).createVolumeGroup(volumeGroup, cloudRegion);
99 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
100 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToTenant(volumeGroup, cloudRegion);
104 public void createVolumeGroupExceptionTest() throws Exception {
105 expectedException.expect(BpmnError.class);
107 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
109 doThrow(Exception.class).when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
111 aaiCreateTasks.createVolumeGroup(execution);
115 public void createProjectTest() throws Exception {
116 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
117 aaiCreateTasks.createProject(execution);
118 verify(aaiServiceInstanceResources, times(1)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
122 public void createPlatformTest() throws Exception {
123 doNothing().when(aaiVnfResources).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
124 aaiCreateTasks.createPlatform(execution);
125 verify(aaiVnfResources, times(1)).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
129 public void createLineOfBusinessTest() throws Exception {
130 doNothing().when(aaiVnfResources).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
131 aaiCreateTasks.createLineOfBusiness(execution);
132 verify(aaiVnfResources, times(1)).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
136 public void createProjectExceptionTest() throws Exception {
137 expectedException.expect(BpmnError.class);
139 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
140 doThrow(Exception.class).when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
141 aaiCreateTasks.createProject(execution);
145 public void createProjectNullProjectNameTest() throws Exception {
146 serviceInstance.getProject().setProjectName(null);
147 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
148 aaiCreateTasks.createProject(execution);
149 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
153 public void createProjectEmptyProjectNameTest() throws Exception {
154 serviceInstance.getProject().setProjectName("");
155 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
156 aaiCreateTasks.createProject(execution);
157 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
161 public void createOwningEntityTest() throws Exception {
162 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
163 doNothing().when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
164 aaiCreateTasks.createOwningEntity(execution);
165 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
166 verify(aaiServiceInstanceResources, times(1)).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
170 public void createOwningEntityNotExistsOwningEntityTest() throws Exception {
171 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
172 doNothing().when(aaiServiceInstanceResources).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
173 aaiCreateTasks.createOwningEntity(execution);
174 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
175 verify(aaiServiceInstanceResources, times(1)).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
179 public void createOwningEntityNullOwningEntityIdTest() throws Exception {
180 expectedException.expect(BpmnError.class);
182 serviceInstance.getOwningEntity().setOwningEntityId(null);
184 aaiCreateTasks.createOwningEntity(execution);
188 public void createOwningEntityEmptyOwningEntityIdTest() throws Exception {
189 expectedException.expect(BpmnError.class);
191 serviceInstance.getOwningEntity().setOwningEntityId("");
193 aaiCreateTasks.createOwningEntity(execution);
197 public void createOwningEntityNullOwningEntityNameTest() throws Exception {
198 expectedException.expect(BpmnError.class);
200 serviceInstance.getOwningEntity().setOwningEntityName(null);
202 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
204 aaiCreateTasks.createOwningEntity(execution);
208 public void createOwningEntityEmptyOwningEntityNameTest() throws Exception {
209 expectedException.expect(BpmnError.class);
211 serviceInstance.getOwningEntity().setOwningEntityName("");
213 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
215 aaiCreateTasks.createOwningEntity(execution);
219 public void createOwningEntityExceptionTest() throws Exception {
220 expectedException.expect(BpmnError.class);
222 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
224 doThrow(Exception.class).when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
226 aaiCreateTasks.createOwningEntity(execution);
230 public void createVnfTest() throws Exception {
231 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
232 aaiCreateTasks.createVnf(execution);
233 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
237 public void createVnfExceptionTest() throws Exception {
238 expectedException.expect(BpmnError.class);
240 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "notfound");
241 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
242 aaiCreateTasks.createVnf(execution);
243 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
248 public void createVfModuleTest() throws Exception {
249 doNothing().when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
250 aaiCreateTasks.createVfModule(execution);
251 verify(aaiVfModuleResources, times(1)).createVfModule(vfModule, genericVnf);
255 public void createServiceSubscriptionTest(){
256 doNothing().when(aaiServiceInstanceResources).createServiceSubscription(customer);
257 aaiCreateTasks.createServiceSubscription(execution);
258 verify(aaiServiceInstanceResources, times(1)).createServiceSubscription(customer);
262 public void createServiceSubscriptionTestExceptionHandling(){
263 expectedException.expect(BpmnError.class);
264 doThrow(Exception.class).when(aaiServiceInstanceResources).createServiceSubscription(customer);
265 aaiCreateTasks.createServiceSubscription(execution);
269 public void createServiceSubscriptionTestCustomerIsNull(){
270 expectedException.expect(BpmnError.class);
271 gBBInput.setCustomer(null);
272 aaiCreateTasks.createServiceSubscription(execution);
276 public void createVfModuleExceptionTest() throws Exception {
277 expectedException.expect(BpmnError.class);
279 doThrow(Exception.class).when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
280 aaiCreateTasks.createVfModule(execution);
284 public void connectVfModuleToVolumeGroupTest() throws Exception {
285 doNothing().when(aaiVfModuleResources).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
286 aaiCreateTasks.connectVfModuleToVolumeGroup(execution);
287 verify(aaiVfModuleResources, times(1)).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
291 public void createNetworkTest() throws Exception {
292 network.getModelInfoNetwork().setNeutronNetworkType("PROVIDER");
294 doNothing().when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
295 aaiCreateTasks.createNetwork(execution);
296 verify(aaiNetworkResources, times(1)).createNetworkConnectToServiceInstance(network, serviceInstance);
300 public void createNetworkExceptionTest() throws Exception {
301 expectedException.expect(BpmnError.class);
303 lookupKeyMap.put(ResourceKey.NETWORK_ID, "notfound");
304 doThrow(Exception.class).when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
305 aaiCreateTasks.createNetwork(execution);
309 public void createCustomerTest() throws Exception {
310 doNothing().when(aaiVpnBindingResources).createCustomer(customer);
312 aaiCreateTasks.createCustomer(execution);
314 verify(aaiVpnBindingResources, times(1)).createCustomer(customer);
318 public void createCustomerExceptionTest() throws Exception {
319 expectedException.expect(BpmnError.class);
321 doThrow(Exception.class).when(aaiVpnBindingResources).createCustomer(customer);
323 aaiCreateTasks.createCustomer(execution);
327 public void createNetworkCollectionTest() throws Exception {
328 doNothing().when(aaiNetworkResources).createNetworkCollection(serviceInstance.getCollection());
329 execution.setVariable("networkCollectionName", "testNetworkCollectionName");
330 aaiCreateTasks.createNetworkCollection(execution);
331 verify(aaiNetworkResources, times(1)).createNetworkCollection(serviceInstance.getCollection());
335 public void createNetworkCollectionInstanceGroupTest() throws Exception {
336 doNothing().when(aaiNetworkResources).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
337 aaiCreateTasks.createNetworkCollectionInstanceGroup(execution);
338 verify(aaiNetworkResources, times(1)).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
342 public void connectNetworkToNetworkCollectionServiceInstanceTest() throws Exception {
343 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
344 aaiCreateTasks.connectNetworkToNetworkCollectionServiceInstance(execution);
345 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
349 public void connectNetworkToNetworkCollectionInstanceGroupTest() throws Exception {
350 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
351 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
352 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
356 public void connectNetworkToNullNetworkCollectionInstanceGroupTest() throws Exception {
357 //reset test data to have no network collection instance group
358 ServiceInstance serviceInstance = new ServiceInstance();
359 serviceInstance.setServiceInstanceId("testServiceInstanceId");
360 L3Network network = new L3Network();
361 network.setNetworkId("testNetworkId");
362 serviceInstance.getNetworks().add(network);
363 lookupKeyMap.put(ResourceKey.NETWORK_ID, network.getNetworkId());
364 gBBInput.setServiceInstance(serviceInstance);
365 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
366 //verify connection call was not executednetwork
367 exception.expect(BpmnError.class);
368 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
369 verify(aaiNetworkResources, never()).connectNetworkToNetworkCollectionInstanceGroup(network, null);
373 public void connectNetworkToCloudRegionTest() throws Exception {
374 gBBInput = execution.getGeneralBuildingBlock();
375 doNothing().when(aaiNetworkResources).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
376 aaiCreateTasks.connectNetworkToCloudRegion(execution);
377 verify(aaiNetworkResources, times(1)).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
381 public void connectNetworkToTenantTest() throws Exception {
382 gBBInput = execution.getGeneralBuildingBlock();
383 doNothing().when(aaiNetworkResources).connectNetworkToTenant(network, gBBInput.getCloudRegion());
384 aaiCreateTasks.connectNetworkToTenant(execution);
385 verify(aaiNetworkResources, times(1)).connectNetworkToTenant(network, gBBInput.getCloudRegion());