2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Modifications Copyright (C) 2020 Nokia
 
   8  * ================================================================================
 
   9  * Licensed under the Apache License, Version 2.0 (the "License");
 
  10  * you may not use this file except in compliance with the License.
 
  11  * You may obtain a copy of the License at
 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
 
  15  * Unless required by applicable law or agreed to in writing, software
 
  16  * distributed under the License is distributed on an "AS IS" BASIS,
 
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18  * See the License for the specific language governing permissions and
 
  19  * limitations under the License.
 
  20  * ============LICENSE_END=========================================================
 
  23 package org.onap.so.bpmn.servicedecomposition.tasks;
 
  25 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 
  26 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 
  27 import static org.junit.Assert.assertEquals;
 
  28 import static org.junit.Assert.assertNull;
 
  29 import static org.junit.Assert.assertTrue;
 
  30 import static org.mockito.ArgumentMatchers.any;
 
  31 import static org.mockito.ArgumentMatchers.anyString;
 
  32 import static org.mockito.ArgumentMatchers.eq;
 
  33 import static org.mockito.ArgumentMatchers.isA;
 
  34 import static org.mockito.Mockito.doReturn;
 
  35 import static org.mockito.Mockito.times;
 
  36 import static org.mockito.Mockito.verify;
 
  38 import java.io.IOException;
 
  39 import java.nio.charset.StandardCharsets;
 
  40 import java.nio.file.Files;
 
  41 import java.nio.file.Paths;
 
  42 import java.util.Arrays;
 
  43 import java.util.List;
 
  44 import java.util.Optional;
 
  45 import org.junit.Before;
 
  46 import org.junit.Rule;
 
  47 import org.junit.Test;
 
  48 import org.junit.rules.ExpectedException;
 
  49 import org.junit.runner.RunWith;
 
  50 import org.mockito.InjectMocks;
 
  51 import org.mockito.Mock;
 
  52 import org.mockito.Mockito;
 
  53 import org.mockito.junit.MockitoJUnitRunner;
 
  54 import org.onap.aai.domain.yang.CloudRegion;
 
  55 import org.onap.aai.domain.yang.Configuration;
 
  56 import org.onap.aai.domain.yang.Configurations;
 
  57 import org.onap.aai.domain.yang.GenericVnf;
 
  58 import org.onap.aai.domain.yang.GenericVnfs;
 
  59 import org.onap.aai.domain.yang.InstanceGroup;
 
  60 import org.onap.aai.domain.yang.L3Network;
 
  61 import org.onap.aai.domain.yang.L3Networks;
 
  62 import org.onap.aai.domain.yang.ServiceInstance;
 
  63 import org.onap.aai.domain.yang.ServiceInstances;
 
  64 import org.onap.aai.domain.yang.VolumeGroup;
 
  65 import org.onap.aai.domain.yang.VolumeGroups;
 
  66 import org.onap.aai.domain.yang.VpnBinding;
 
  67 import org.onap.aaiclient.client.aai.AAIObjectPlurals;
 
  68 import org.onap.aaiclient.client.aai.AAIObjectType;
 
  69 import org.onap.aaiclient.client.aai.AAIResourcesClient;
 
  70 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
 
  71 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 
  72 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 
  73 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth;
 
  74 import org.onap.so.bpmn.common.InjectionHelper;
 
  75 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
 
  76 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
 
  77 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 
  78 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.MultipleObjectsFoundException;
 
  79 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException;
 
  80 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 
  81 import org.onap.so.db.catalog.beans.Service;
 
  82 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
 
  83 import org.onap.so.db.catalog.client.CatalogDbClient;
 
  84 import org.onap.so.db.request.beans.InfraActiveRequests;
 
  85 import org.onap.so.db.request.beans.RequestProcessingData;
 
  86 import org.onap.so.db.request.client.RequestsDbClient;
 
  87 import org.onap.so.serviceinstancebeans.CloudConfiguration;
 
  88 import org.onap.so.serviceinstancebeans.RequestDetails;
 
  89 import com.fasterxml.jackson.databind.DeserializationFeature;
 
  90 import com.fasterxml.jackson.databind.ObjectMapper;
 
  92 @RunWith(MockitoJUnitRunner.class)
 
  93 public class BBInputSetupUtilsTest {
 
  94     protected ObjectMapper mapper =
 
  95             new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);;
 
  96     private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
 
  99     BBInputSetupUtils bbInputSetupUtils = new BBInputSetupUtils();
 
 102     protected CatalogDbClient MOCK_catalogDbClient;
 
 105     protected RequestsDbClient MOCK_requestsDbClient;
 
 108     protected AAIResourcesClient MOCK_aaiResourcesClient;
 
 111     protected InjectionHelper MOCK_injectionHelper;
 
 114     public ExpectedException expectedException = ExpectedException.none();
 
 117     public void setup() {
 
 118         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
 122     public void getCatalogServiceByModelUUIDTest() throws IOException {
 
 123         Service expected = mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
 
 124         final String modelUUID = "modelUUIDTest";
 
 126         doReturn(expected).when(MOCK_catalogDbClient).getServiceByID(modelUUID);
 
 128         assertThat(bbInputSetupUtils.getCatalogServiceByModelUUID(modelUUID), sameBeanAs(expected));
 
 132     public void getCatalogServiceByModelVersionAndModelInvariantUUIDTest() throws IOException {
 
 133         final String modelVersion = "modelVersionTest";
 
 134         final String modelInvariantUUID = "modelInvariantUUIDTest";
 
 135         Service expectedService =
 
 136                 mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
 
 138         doReturn(expectedService).when(MOCK_catalogDbClient).getServiceByModelVersionAndModelInvariantUUID(modelVersion,
 
 141         assertThat(bbInputSetupUtils.getCatalogServiceByModelVersionAndModelInvariantUUID(modelVersion,
 
 142                 modelInvariantUUID), sameBeanAs(expectedService));
 
 146     public void getVnfcInstanceGroupsTest() throws IOException {
 
 147         final String modelCustomizationUUID = "modelCustomizationUUIDTest";
 
 148         VnfcInstanceGroupCustomization vnfc = mapper.readValue(
 
 149                 new File(RESOURCE_PATH + "VnfcInstanceGroupCustomization.json"), VnfcInstanceGroupCustomization.class);
 
 151         doReturn(Arrays.asList(vnfc)).when(MOCK_catalogDbClient)
 
 152                 .getVnfcInstanceGroupsByVnfResourceCust(modelCustomizationUUID);
 
 154         assertThat(bbInputSetupUtils.getVnfcInstanceGroups(modelCustomizationUUID), sameBeanAs(Arrays.asList(vnfc)));
 
 158     public void getRequestDetailsTest() throws IOException {
 
 159         final String requestId = "requestId";
 
 160         InfraActiveRequests infraActiveRequest = mapper
 
 161                 .readValue(new File(RESOURCE_PATH + "InfraActiveRequestExpected.json"), InfraActiveRequests.class);
 
 162         RequestDetails expected =
 
 163                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetailsExpected.json"), RequestDetails.class);
 
 165         doReturn(infraActiveRequest).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(requestId);
 
 167         assertThat(bbInputSetupUtils.getRequestDetails(requestId), sameBeanAs(expected));
 
 171     public void getRequestDetailsNullTest() throws IOException {
 
 172         assertNull(bbInputSetupUtils.getRequestDetails(""));
 
 176     public void getCloudRegionTest() {
 
 177         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 178         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
 
 179         Optional<CloudRegion> expected = Optional.of(new CloudRegion());
 
 181         doReturn(expected).when(MOCK_aaiResourcesClient).get(CloudRegion.class,
 
 182                 AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudConfig.getCloudOwner(),
 
 183                         cloudConfig.getLcpCloudRegionId()).depth(Depth.TWO));
 
 185         assertThat(bbInputSetupUtils.getCloudRegion(cloudConfig), sameBeanAs(expected.get()));
 
 189     public void getCloudRegionNullTest() {
 
 190         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 191         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
 
 193         assertNull(bbInputSetupUtils.getCloudRegion(cloudConfig));
 
 197     public void getCloudRegionEmptyIdTest() {
 
 198         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 199         cloudConfig.setLcpCloudRegionId("");
 
 201         assertNull(bbInputSetupUtils.getCloudRegion(cloudConfig));
 
 205     public void getAAIInstanceGroupTest() {
 
 206         final String instanceGroupId = "instanceGroupId";
 
 207         Optional<InstanceGroup> expected = Optional.of(new InstanceGroup());
 
 208         expected.get().setId(instanceGroupId);
 
 210         doReturn(expected).when(MOCK_aaiResourcesClient).get(InstanceGroup.class,
 
 211                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId));
 
 213         assertThat(bbInputSetupUtils.getAAIInstanceGroup(instanceGroupId), sameBeanAs(expected.get()));
 
 217     public void getAAIInstanceGroupNullTest() {
 
 218         assertNull(bbInputSetupUtils.getAAIInstanceGroup(""));
 
 222     public void getAAICustomerTest() {
 
 223         final String globalSubscriberId = "globalSubscriberId";
 
 224         Optional<org.onap.aai.domain.yang.Customer> expected = Optional.of(new org.onap.aai.domain.yang.Customer());
 
 225         expected.get().setGlobalCustomerId(globalSubscriberId);
 
 227         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.Customer.class,
 
 228                 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId));
 
 230         assertThat(bbInputSetupUtils.getAAICustomer(globalSubscriberId), sameBeanAs(expected.get()));
 
 234     public void getAAICustomerNullTest() {
 
 235         assertNull(bbInputSetupUtils.getAAICustomer(""));
 
 239     public void getAAIServiceSubscriptionTest() {
 
 240         final String globalSubscriberId = "globalSubscriberId";
 
 241         final String subscriptionServiceType = "subscriptionServiceType";
 
 242         Optional<org.onap.aai.domain.yang.ServiceSubscription> expected =
 
 243                 Optional.of(new org.onap.aai.domain.yang.ServiceSubscription());
 
 245         expected.get().setServiceType(subscriptionServiceType);
 
 246         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.ServiceSubscription.class,
 
 247                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId,
 
 248                         subscriptionServiceType));
 
 250         assertThat(bbInputSetupUtils.getAAIServiceSubscription(globalSubscriberId, subscriptionServiceType),
 
 251                 sameBeanAs(expected.get()));
 
 255     public void getAAIServiceSubscriptionErrorsTest() {
 
 256         assertNull(bbInputSetupUtils.getAAIServiceSubscription(null, null));
 
 257         assertNull(bbInputSetupUtils.getAAIServiceSubscription("", ""));
 
 258         assertNull(bbInputSetupUtils.getAAIServiceSubscription("", null));
 
 259         assertNull(bbInputSetupUtils.getAAIServiceSubscription(null, ""));
 
 263     public void getAAIServiceInstanceByIdTest() {
 
 264         final String serviceInstanceId = "serviceInstanceId";
 
 265         ServiceInstance expectedServiceInstance = new ServiceInstance();
 
 267         doReturn(Optional.of(expectedServiceInstance)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 268                 isA(AAIResourceUri.class));
 
 270         assertThat(bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId), sameBeanAs(expectedServiceInstance));
 
 274     public void getAAIServiceInstanceById_ifEmptyReturnNull() {
 
 275         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(ServiceInstance.class),
 
 276                 any(AAIResourceUri.class));
 
 278         assertNull(bbInputSetupUtils.getAAIServiceInstanceById("any"));
 
 282     public void getAAIServiceInstanceByIdAndCustomerTest() {
 
 283         final String globalCustomerId = "globalCustomerId";
 
 284         final String serviceType = "serviceType";
 
 285         final String serviceInstanceId = "serviceInstanceId";
 
 286         ServiceInstance expected = new ServiceInstance();
 
 287         expected.setServiceInstanceId(serviceInstanceId);
 
 289         doReturn(Optional.of(expected)).when(MOCK_aaiResourcesClient).get(ServiceInstance.class, AAIUriFactory
 
 290                 .createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustomerId, serviceType, serviceInstanceId)
 
 293         assertThat(bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer(globalCustomerId, serviceType,
 
 294                 serviceInstanceId), sameBeanAs(expected));
 
 298     public void getAAIServiceInstanceByIdAndCustomerNullTest() {
 
 299         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(ServiceInstance.class),
 
 300                 any(AAIResourceUri.class));
 
 302         assertNull(bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer("", "", ""));
 
 306     public void getAAIServiceInstanceByNameTest() throws Exception {
 
 307         final String serviceInstanceName = "serviceInstanceName";
 
 309         ServiceInstance expectedServiceInstance = new ServiceInstance();
 
 310         expectedServiceInstance.setServiceInstanceId("serviceInstanceId");
 
 312         ServiceSubscription serviceSubscription = new ServiceSubscription();
 
 313         serviceSubscription.setServiceType("serviceType");
 
 315         Customer customer = new Customer();
 
 316         customer.setGlobalCustomerId("globalCustomerId");
 
 317         customer.setServiceSubscription(serviceSubscription);
 
 319         ServiceInstances serviceInstances = new ServiceInstances();
 
 320         serviceInstances.getServiceInstance().add(expectedServiceInstance);
 
 322         AAIPluralResourceUri expectedUri = AAIUriFactory
 
 323                 .createResourceUri(AAIObjectPlurals.SERVICE_INSTANCE, customer.getGlobalCustomerId(),
 
 324                         customer.getServiceSubscription().getServiceType())
 
 325                 .queryParam("service-instance-name", serviceInstanceName).depth(Depth.TWO);
 
 326         bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
 
 328         verify(MOCK_aaiResourcesClient, times(1)).getOne(org.onap.aai.domain.yang.ServiceInstances.class,
 
 329                 org.onap.aai.domain.yang.ServiceInstance.class, expectedUri);
 
 333     public void getAAIServiceInstanceByNameNullTest() throws Exception {
 
 334         Customer customer = new Customer();
 
 335         customer.setServiceSubscription(new ServiceSubscription());
 
 337         assertNull(bbInputSetupUtils.getAAIServiceInstanceByName("", customer));
 
 341     public void getOptionalAAIServiceInstanceByNameNullTest() throws Exception {
 
 342         Optional<ServiceInstance> actual = bbInputSetupUtils.getAAIServiceInstanceByName("", "", "");
 
 344         assertThat(actual, sameBeanAs(Optional.empty()));
 
 348     public void getCatalogInstanceGroupNullTest() {
 
 349         assertNull(bbInputSetupUtils.getCatalogInstanceGroup(""));
 
 353     public void getCatalogInstanceGroupTest() throws IOException {
 
 354         final String modelUUID = "modelUUIDTest";
 
 355         org.onap.so.db.catalog.beans.InstanceGroup expectedInstanceGroup = mapper.readValue(
 
 356                 new File(RESOURCE_PATH + "InstanceGroup.json"), org.onap.so.db.catalog.beans.InstanceGroup.class);
 
 358         doReturn(expectedInstanceGroup).when(MOCK_catalogDbClient).getInstanceGroupByModelUUID(modelUUID);
 
 360         assertThat(bbInputSetupUtils.getCatalogInstanceGroup(modelUUID), sameBeanAs(expectedInstanceGroup));
 
 364     public void getCollectionResourceInstanceGroupCustomizationTest() {
 
 365         final String modelCustomizationUUID = "modelCustomizationUUID";
 
 366         CollectionResourceInstanceGroupCustomization expectedCollection =
 
 367                 new CollectionResourceInstanceGroupCustomization();
 
 369         doReturn(Arrays.asList(expectedCollection)).when(MOCK_catalogDbClient)
 
 370                 .getCollectionResourceInstanceGroupCustomizationByModelCustUUID(modelCustomizationUUID);
 
 372         assertThat(bbInputSetupUtils.getCollectionResourceInstanceGroupCustomization(modelCustomizationUUID),
 
 373                 sameBeanAs(Arrays.asList(expectedCollection)));
 
 377     public void getAAIConfigurationNullTest() {
 
 378         assertNull(bbInputSetupUtils.getAAIConfiguration(""));
 
 382     public void getAAIConfigurationTest() throws IOException {
 
 383         final String configurationId = "configurationId";
 
 384         Configuration expectedAaiConfiguration =
 
 385                 mapper.readValue(new File(RESOURCE_PATH + "ConfigurationInput.json"), Configuration.class);
 
 387         doReturn(Optional.of(expectedAaiConfiguration)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 388                 isA(AAIResourceUri.class));
 
 390         assertThat(bbInputSetupUtils.getAAIConfiguration(configurationId), sameBeanAs(expectedAaiConfiguration));
 
 394     public void getAAIGenericVnfNullTest() {
 
 395         assertNull(bbInputSetupUtils.getAAIGenericVnf(""));
 
 399     public void getAAIGenericVnfTest() throws IOException {
 
 400         final String vnfId = "vnfId";
 
 401         GenericVnf expectedAaiVnf =
 
 402                 mapper.readValue(new File(RESOURCE_PATH + "aaiGenericVnfInput.json"), GenericVnf.class);
 
 404         doReturn(Optional.of(expectedAaiVnf)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 405                 eq(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE)));
 
 407         assertThat(bbInputSetupUtils.getAAIGenericVnf(vnfId), sameBeanAs(expectedAaiVnf));
 
 411     public void getAAIResourceDepthOneTest() {
 
 412         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "anyVnfId");
 
 413         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.ONE);
 
 414         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
 
 416         bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri);
 
 418         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
 
 419         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
 
 423     public void getAAIResourceDepthTwoTest() {
 
 424         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "anyVnfId");
 
 425         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.TWO);
 
 426         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
 
 428         bbInputSetupUtils.getAAIResourceDepthTwo(aaiResourceUri);
 
 430         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
 
 431         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
 
 435     public void getRelatedNetworkByNameFromServiceInstanceTest() throws Exception {
 
 436         final String networkId = "id123";
 
 437         final String networkName = "name123";
 
 439         Optional<L3Networks> expected = Optional.of(new L3Networks());
 
 440         L3Network network = new L3Network();
 
 441         network.setNetworkId(networkId);
 
 442         network.setNetworkName(networkName);
 
 443         expected.get().getL3Network().add(network);
 
 444         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIPluralResourceUri.class));
 
 445         Optional<L3Network> actual =
 
 446                 bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(networkId, networkName);
 
 448         assertTrue(actual.isPresent());
 
 449         assertEquals(networkId, actual.get().getNetworkId());
 
 450         assertEquals(networkName, actual.get().getNetworkName());
 
 451         assertEquals(expected.get().getL3Network().get(0).getNetworkId(), actual.get().getNetworkId());
 
 455     public void getRelatedNetworkByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 456         String serviceInstanceId = "serviceInstanceId";
 
 457         String networkName = "networkName";
 
 459         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class),
 
 460                 any(AAIPluralResourceUri.class));
 
 462         Optional<L3Network> actualNetwork =
 
 463                 bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(serviceInstanceId, networkName);
 
 465         assertEquals(Optional.empty(), actualNetwork);
 
 469     public void getRelatedServiceInstanceFromInstanceGroupTest() throws Exception {
 
 470         Optional<ServiceInstances> expected = Optional.of(new ServiceInstances());
 
 471         ServiceInstance serviceInstance = new ServiceInstance();
 
 472         serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 473         serviceInstance.setServiceInstanceName("serviceInstanceName");
 
 474         expected.get().getServiceInstance().add(serviceInstance);
 
 476         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
 
 477                 any(AAIPluralResourceUri.class));
 
 478         Optional<ServiceInstance> actual = this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
 
 480         assertTrue(actual.isPresent());
 
 481         assertEquals(expected.get().getServiceInstance().get(0).getServiceInstanceId(),
 
 482                 actual.get().getServiceInstanceId());
 
 486     public void getRelatedServiceInstanceFromInstanceGroupMultipleExceptionTest() throws Exception {
 
 487         final String instanceGroupId = "ig-001";
 
 488         expectedException.expect(MultipleObjectsFoundException.class);
 
 489         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
 
 490         ServiceInstance si1 = Mockito.mock(ServiceInstance.class);
 
 491         ServiceInstance si2 = Mockito.mock(ServiceInstance.class);
 
 492         serviceInstances.get().getServiceInstance().add(si1);
 
 493         serviceInstances.get().getServiceInstance().add(si2);
 
 495         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
 
 496                 any(AAIPluralResourceUri.class));
 
 497         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup(instanceGroupId);
 
 501     public void getRelatedServiceInstanceFromInstanceGroupNotFoundExceptionTest() throws Exception {
 
 502         expectedException.expect(NoServiceInstanceFoundException.class);
 
 503         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
 
 505         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
 
 506                 any(AAIPluralResourceUri.class));
 
 507         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
 
 511     public void getRelatedVnfByNameFromServiceInstanceTest() throws Exception {
 
 512         final String vnfId = "id123";
 
 513         final String vnfName = "name123";
 
 514         final String serviceInstanceId = "service-instance-id123";
 
 515         GenericVnf vnf = new GenericVnf();
 
 517         vnf.setVnfName(vnfName);
 
 518         doReturn(Optional.of(vnf)).when(MOCK_aaiResourcesClient).getOne(GenericVnfs.class, GenericVnf.class,
 
 519                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
 
 520                         .relatedTo(AAIObjectPlurals.GENERIC_VNF).queryParam("vnf-name", vnfName));
 
 521         Optional<GenericVnf> actual =
 
 522                 this.bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName);
 
 523         assertTrue(actual.isPresent());
 
 524         assertEquals(vnf.getVnfId(), actual.get().getVnfId());
 
 528     public void getRelatedVnfByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 529         final String serviceInstanceId = "serviceInstanceId";
 
 530         final String vnfName = "vnfName";
 
 532         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).getOne(eq(GenericVnfs.class), eq(GenericVnf.class),
 
 533                 any(AAIPluralResourceUri.class));
 
 535         assertEquals(Optional.empty(),
 
 536                 bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName));
 
 540     public void getRelatedVolumeGroupByNameFromVnfTest() throws Exception {
 
 541         final String vnfId = "vnf-id123";
 
 542         final String volumeGroupId = "id123";
 
 543         final String volumeGroupName = "volume-group-name123";
 
 544         VolumeGroup volumeGroup = new VolumeGroup();
 
 545         volumeGroup.setVolumeGroupId(volumeGroupId);
 
 546         volumeGroup.setVolumeGroupName(volumeGroupName);
 
 547         doReturn(Optional.of(volumeGroup)).when(MOCK_aaiResourcesClient).getOne(VolumeGroups.class, VolumeGroup.class,
 
 548                 AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
 
 549                         .relatedTo(AAIObjectPlurals.VOLUME_GROUP).queryParam("volume-group-name", volumeGroupName));
 
 550         Optional<VolumeGroup> actual =
 
 551                 this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
 
 552         assertEquals(volumeGroup.getVolumeGroupId(), actual.get().getVolumeGroupId());
 
 556     public void getRelatedVolumeGroupByNameFromVnfNotFoundTest() throws Exception {
 
 557         String vnfId = "vnfId";
 
 558         String volumeGroupName = "volumeGroupName";
 
 560         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).getOne(eq(VolumeGroups.class), eq(VolumeGroup.class),
 
 561                 any(AAIPluralResourceUri.class));
 
 563         Optional<VolumeGroup> actualVolumeGroup =
 
 564                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
 
 566         assertEquals(Optional.empty(), actualVolumeGroup);
 
 570     public void getRelatedVolumeGroupByNameFromVfModuleTest() throws Exception {
 
 571         VolumeGroup volumeGroup = new VolumeGroup();
 
 572         volumeGroup.setVolumeGroupId("id123");
 
 573         volumeGroup.setVolumeGroupName("name123");
 
 574         doReturn(Optional.of(volumeGroup)).when(MOCK_aaiResourcesClient).getOne(VolumeGroups.class, VolumeGroup.class,
 
 575                 AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, "vnf-id123", "vf-module-id123")
 
 576                         .relatedTo(AAIObjectPlurals.VOLUME_GROUP)
 
 577                         .queryParam("volume-group-name", "volume-group-name123"));
 
 578         Optional<VolumeGroup> actual = this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule("vnf-id123",
 
 579                 "vf-module-id123", "volume-group-name123");
 
 580         assertTrue(actual.isPresent());
 
 581         assertEquals(volumeGroup.getVolumeGroupId(), actual.get().getVolumeGroupId());
 
 585     public void getRelatedVolumeGroupFromVfModuleMultipleVolumeGroupsExceptionTest() throws Exception {
 
 586         expectedException.expect(Exception.class);
 
 587         final String vnfId = "vnfId";
 
 588         final String volumeGroupId = "volumeGroupId";
 
 590         VolumeGroup volumeGroup = new VolumeGroup();
 
 591         volumeGroup.setVolumeGroupId("id123");
 
 592         volumeGroup.setVolumeGroupName("name123");
 
 594         VolumeGroups expectedVolumeGroup = new VolumeGroups();
 
 595         expectedVolumeGroup.getVolumeGroup().add(volumeGroup);
 
 596         expectedVolumeGroup.getVolumeGroup().add(volumeGroup);
 
 598         doReturn(expectedVolumeGroup).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class),
 
 599                 any(AAIResourceUri.class));
 
 601         bbInputSetupUtils.getRelatedVolumeGroupFromVfModule(vnfId, volumeGroupId);
 
 605     public void getRelatedVolumeGroupFromVfModuleNotFoundTest() throws Exception {
 
 606         final String vnfId = "vnfId";
 
 607         final String volumeGroupId = "volumeGroupId";
 
 609         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).getOne(eq(VolumeGroups.class), eq(VolumeGroup.class),
 
 610                 any(AAIPluralResourceUri.class));
 
 612         Optional<VolumeGroup> actualVolumeGroup =
 
 613                 bbInputSetupUtils.getRelatedVolumeGroupFromVfModule(vnfId, volumeGroupId);
 
 615         assertEquals(Optional.empty(), actualVolumeGroup);
 
 619     public void getRelatedVolumeGroupFromVfModuleTest() throws Exception {
 
 620         VolumeGroup volumeGroup = new VolumeGroup();
 
 621         volumeGroup.setVolumeGroupId("id123");
 
 622         doReturn(Optional.of(volumeGroup)).when(MOCK_aaiResourcesClient).getOne(VolumeGroups.class, VolumeGroup.class,
 
 623                 AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, "vnf-id123", "vf-module-id123")
 
 624                         .relatedTo(AAIObjectPlurals.VOLUME_GROUP));
 
 625         Optional<VolumeGroup> actual =
 
 626                 this.bbInputSetupUtils.getRelatedVolumeGroupFromVfModule("vnf-id123", "vf-module-id123");
 
 627         assertTrue(actual.isPresent());
 
 628         assertEquals(volumeGroup.getVolumeGroupId(), actual.get().getVolumeGroupId());
 
 632     public void getRelatedVolumeGroupByNameFromVfModuleNotFoundTest() throws Exception {
 
 633         String vnfId = "vnfId";
 
 634         String volumeGroupId = "volumeGroupId";
 
 635         String volumeGroupName = "volumeGroupName";
 
 637         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).getOne(eq(VolumeGroups.class), eq(VolumeGroup.class),
 
 638                 any(AAIPluralResourceUri.class));
 
 640         Optional<VolumeGroup> actualVolumeGroup =
 
 641                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnfId, volumeGroupId, volumeGroupName);
 
 643         assertEquals(Optional.empty(), actualVolumeGroup);
 
 647     public void loadOriginalFlowExecutionPathTest() throws IOException {
 
 648         final String requestId = "123";
 
 649         final String originalRequestId = "originalRequestId";
 
 650         final String flowsToExecuteString = new String(
 
 651                 Files.readAllBytes(Paths.get(RESOURCE_PATH + "FlowsToExecute.json")), StandardCharsets.UTF_8);
 
 653         InfraActiveRequests request = new InfraActiveRequests();
 
 654         ExecuteBuildingBlock[] expectedFlowsToExecute =
 
 655                 mapper.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
 657         request.setRequestId(requestId);
 
 658         request.setOriginalRequestId(originalRequestId);
 
 659         doReturn(request).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(requestId);
 
 661         RequestProcessingData requestProcessingData = new RequestProcessingData();
 
 662         requestProcessingData.setValue(flowsToExecuteString);
 
 663         doReturn(requestProcessingData).when(MOCK_requestsDbClient)
 
 664                 .getRequestProcessingDataBySoRequestIdAndName(anyString(), anyString());
 
 666         List<ExecuteBuildingBlock> flowsToExecute = bbInputSetupUtils.loadOriginalFlowExecutionPath(requestId);
 
 668         assertEquals(mapper.writeValueAsString(expectedFlowsToExecute), mapper.writeValueAsString(flowsToExecute));
 
 672     public void getRelatedConfigurationByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 673         assertEquals(Optional.empty(), bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("", ""));
 
 677     public void getRelatedConfigurationByNameFromServiceInstanceTest() throws Exception {
 
 678         Configuration configuration = new Configuration();
 
 679         configuration.setConfigurationId("id123");
 
 680         doReturn(Optional.of(configuration)).when(MOCK_aaiResourcesClient).getOne(Configurations.class,
 
 682                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "service-instance-id123")
 
 683                         .relatedTo(AAIObjectPlurals.CONFIGURATION)
 
 684                         .queryParam("configuration-name", "configuration-name123"));
 
 685         Optional<Configuration> actual = this.bbInputSetupUtils
 
 686                 .getRelatedConfigurationByNameFromServiceInstance("service-instance-id123", "configuration-name123");
 
 687         assertTrue(actual.isPresent());
 
 688         assertEquals(configuration.getConfigurationId(), actual.get().getConfigurationId());
 
 692     public void existsAAIVfModuleGloballyByNameTest() {
 
 693         AAIPluralResourceUri expectedUri =
 
 694                 AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", "testVfModule");
 
 695         bbInputSetupUtils.existsAAIVfModuleGloballyByName("testVfModule");
 
 697         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 701     public void existsAAIConfigurationGloballyByNameTest() {
 
 702         AAIPluralResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
 
 703                 .queryParam("configuration-name", "testConfig");
 
 704         bbInputSetupUtils.existsAAIConfigurationGloballyByName("testConfig");
 
 706         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 710     public void existsAAINetworksGloballyByNameTest() {
 
 711         AAIPluralResourceUri expectedUri =
 
 712                 AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", "testNetwork");
 
 713         bbInputSetupUtils.existsAAINetworksGloballyByName("testNetwork");
 
 715         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 719     public void existsAAIVolumeGroupGloballyByNameTest() {
 
 720         AAIPluralResourceUri expectedUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
 
 721                 .queryParam("volume-group-name", "testVoumeGroup");
 
 723         bbInputSetupUtils.existsAAIVolumeGroupGloballyByName("testVoumeGroup");
 
 724         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 728     public void shouldChangeInfraActiveRequestVnfId() throws IOException {
 
 729         final String vnfId = "vnfId";
 
 730         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
 732         bbInputSetupUtils.updateInfraActiveRequestVnfId(infraActiveRequests, vnfId);
 
 734         assertEquals(vnfId, infraActiveRequests.getVnfId());
 
 738     public void shouldChangeInfraActiveRequestVfModuleId() throws IOException {
 
 739         final String vfModuleId = "vfModuleId";
 
 740         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
 742         bbInputSetupUtils.updateInfraActiveRequestVfModuleId(infraActiveRequests, vfModuleId);
 
 744         assertEquals(vfModuleId, infraActiveRequests.getVfModuleId());
 
 748     public void shouldChangeInfraActiveRequestVolumeGroupId() throws IOException {
 
 749         final String volumeGroupId = "volumeGroupId";
 
 750         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
 752         bbInputSetupUtils.updateInfraActiveRequestVolumeGroupId(infraActiveRequests, volumeGroupId);
 
 754         assertEquals(volumeGroupId, infraActiveRequests.getVolumeGroupId());
 
 758     public void shouldChangeInfraActiveRequestNetworkId() throws IOException {
 
 759         final String networkId = "activeRequestNetworkId";
 
 760         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
 762         bbInputSetupUtils.updateInfraActiveRequestNetworkId(infraActiveRequests, networkId);
 
 764         assertEquals(networkId, infraActiveRequests.getNetworkId());
 
 768     public void getAAIVpnBindingNullTest() {
 
 769         assertNull(bbInputSetupUtils.getAAIVpnBinding("vpnBindingId"));
 
 773     public void getAAIVolumeGroupNullTest() {
 
 774         VolumeGroup actualAaiVnf =
 
 775                 bbInputSetupUtils.getAAIVolumeGroup("cloudOwnerId", "cloudRegionId", "volumeGroupId");
 
 776         assertNull(actualAaiVnf);
 
 780     public void getAAIVfModuleNullTest() {
 
 781         assertNull(bbInputSetupUtils.getAAIVfModule("vnfId", "vfModuleId"));
 
 785     public void getAAIL3NetworkNullTest() {
 
 786         assertNull(bbInputSetupUtils.getAAIL3Network("networkId"));
 
 790     public void getAICVpnBindingFromNetwork_noVpnBindingTest() throws IOException {
 
 791         L3Network l3Network =
 
 792                 mapper.readValue(new File(RESOURCE_PATH + "aaiL3NetworkInputWithSubnets.json"), L3Network.class);
 
 794         Optional<VpnBinding> actual = bbInputSetupUtils.getAICVpnBindingFromNetwork(l3Network);
 
 795         assertEquals(Optional.empty(), actual);
 
 799     public void getAAIServiceInstancesGloballyByName_noAAIResourceTest() {
 
 800         final String serviceInstanceName = "serviceInstanceName";
 
 802         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIPluralResourceUri.class));
 
 803         ServiceInstances actualServiceInstances =
 
 804                 bbInputSetupUtils.getAAIServiceInstancesGloballyByName(serviceInstanceName);
 
 806         assertNull(actualServiceInstances);
 
 810     public void getAAIVnfsGloballyByName_noAAIResourceTest() {
 
 811         final String vnfName = "vnfName";
 
 813         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIPluralResourceUri.class));
 
 814         GenericVnfs actualGenericVnfs = bbInputSetupUtils.getAAIVnfsGloballyByName(vnfName);
 
 816         assertNull(actualGenericVnfs);
 
 819     private InfraActiveRequests loadExpectedInfraActiveRequest() throws IOException {
 
 820         return mapper.readValue(new File(RESOURCE_PATH + "InfraActiveRequestExpected.json"), InfraActiveRequests.class);