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.hamcrest.CoreMatchers.containsString;
 
  28 import static org.junit.Assert.assertEquals;
 
  29 import static org.junit.Assert.assertNull;
 
  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.util.Arrays;
 
  40 import java.util.List;
 
  41 import java.util.Optional;
 
  42 import org.junit.Before;
 
  43 import org.junit.Rule;
 
  44 import org.junit.Test;
 
  45 import org.junit.rules.ExpectedException;
 
  46 import org.junit.runner.RunWith;
 
  47 import org.mockito.InjectMocks;
 
  48 import org.mockito.Mock;
 
  49 import org.mockito.Mockito;
 
  50 import org.mockito.junit.MockitoJUnitRunner;
 
  51 import org.onap.aai.domain.yang.CloudRegion;
 
  52 import org.onap.aai.domain.yang.Configuration;
 
  53 import org.onap.aai.domain.yang.Configurations;
 
  54 import org.onap.aai.domain.yang.GenericVnf;
 
  55 import org.onap.aai.domain.yang.GenericVnfs;
 
  56 import org.onap.aai.domain.yang.L3Network;
 
  57 import org.onap.aai.domain.yang.L3Networks;
 
  58 import org.onap.aai.domain.yang.ServiceInstance;
 
  59 import org.onap.aai.domain.yang.ServiceInstances;
 
  60 import org.onap.aai.domain.yang.VolumeGroup;
 
  61 import org.onap.aai.domain.yang.VolumeGroups;
 
  62 import org.onap.aai.domain.yang.VpnBinding;
 
  63 import org.onap.so.bpmn.common.InjectionHelper;
 
  64 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
 
  65 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
 
  66 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 
  67 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.MultipleObjectsFoundException;
 
  68 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException;
 
  69 import org.onap.so.client.aai.AAIObjectPlurals;
 
  70 import org.onap.so.client.aai.AAIObjectType;
 
  71 import org.onap.so.client.aai.AAIResourcesClient;
 
  72 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 
  73 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
 
  74 import org.onap.so.client.graphinventory.entities.uri.Depth;
 
  75 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
 
  76 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 
  77 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 
  78 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 
  79 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 
  80 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 
  81 import org.onap.so.db.catalog.beans.Service;
 
  82 import org.onap.so.db.catalog.client.CatalogDbClient;
 
  83 import org.onap.so.db.request.beans.InfraActiveRequests;
 
  84 import org.onap.so.db.request.beans.RequestProcessingData;
 
  85 import org.onap.so.db.request.client.RequestsDbClient;
 
  86 import org.onap.so.serviceinstancebeans.CloudConfiguration;
 
  87 import org.onap.so.serviceinstancebeans.ModelInfo;
 
  88 import org.onap.so.serviceinstancebeans.RequestDetails;
 
  89 import com.fasterxml.jackson.core.JsonParseException;
 
  90 import com.fasterxml.jackson.databind.JsonMappingException;
 
  91 import com.fasterxml.jackson.databind.ObjectMapper;
 
  93 @RunWith(MockitoJUnitRunner.class)
 
  94 public class BBInputSetupUtilsTest {
 
  95     protected ObjectMapper mapper = new ObjectMapper();
 
  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 testGetCatalogServiceByModelUUID() throws JsonParseException, JsonMappingException, IOException {
 
 123         Service expected = mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
 
 125         RequestDetails requestDetails = new RequestDetails();
 
 126         ModelInfo modelInfo = new ModelInfo();
 
 127         modelInfo.setModelVersionId("modelUUID");
 
 128         requestDetails.setModelInfo(modelInfo);
 
 129         doReturn(expected).when(MOCK_catalogDbClient).getServiceByID("modelUUID");
 
 130         Service actual = bbInputSetupUtils.getCatalogServiceByModelUUID(modelInfo.getModelVersionId());
 
 132         assertThat(actual, sameBeanAs(expected));
 
 136     public void testGetCatalogServiceByModelVersionAndModelInvariantUUID()
 
 137             throws JsonParseException, JsonMappingException, IOException {
 
 138         String modelVersion = "modelVersion";
 
 139         String modelInvariantUUID = "modelInvariantUUID";
 
 140         Service expectedService =
 
 141                 mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
 
 143         doReturn(expectedService).when(MOCK_catalogDbClient)
 
 144                 .getServiceByModelVersionAndModelInvariantUUID(isA(String.class), isA(String.class));
 
 146         Service actualService = bbInputSetupUtils.getCatalogServiceByModelVersionAndModelInvariantUUID(modelVersion,
 
 149         assertThat(actualService, sameBeanAs(expectedService));
 
 153     public void testGetVnfcInstanceGroups() throws JsonParseException, JsonMappingException, IOException {
 
 154         VnfcInstanceGroupCustomization vnfc = mapper.readValue(
 
 155                 new File(RESOURCE_PATH + "VnfcInstanceGroupCustomization.json"), VnfcInstanceGroupCustomization.class);
 
 156         String modelCustomizationUUID = "modelCustomizationUUID";
 
 158         doReturn(Arrays.asList(vnfc)).when(MOCK_catalogDbClient)
 
 159                 .getVnfcInstanceGroupsByVnfResourceCust(isA(String.class));
 
 161         List<VnfcInstanceGroupCustomization> actualVnfcList =
 
 162                 bbInputSetupUtils.getVnfcInstanceGroups(modelCustomizationUUID);
 
 164         assertThat(actualVnfcList, sameBeanAs(Arrays.asList(vnfc)));
 
 168     public void testGetRequestDetails() throws JsonParseException, JsonMappingException, IOException {
 
 169         InfraActiveRequests infraActiveRequest = mapper
 
 170                 .readValue(new File(RESOURCE_PATH + "InfraActiveRequestExpected.json"), InfraActiveRequests.class);
 
 172         RequestDetails expected =
 
 173                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetailsExpected.json"), RequestDetails.class);
 
 174         String requestId = "requestId";
 
 175         doReturn(infraActiveRequest).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(requestId);
 
 176         RequestDetails actual = bbInputSetupUtils.getRequestDetails(requestId);
 
 178         assertThat(actual, sameBeanAs(expected));
 
 182     public void getRequestDetailsNullTest() throws IOException {
 
 183         RequestDetails requestDetails = bbInputSetupUtils.getRequestDetails("");
 
 185         assertNull(requestDetails);
 
 189     public void testGetCloudRegion() {
 
 190         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 191         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
 
 192         Optional<org.onap.aai.domain.yang.CloudRegion> expected =
 
 193                 Optional.of(new org.onap.aai.domain.yang.CloudRegion());
 
 194         expected.get().setCloudOwner("cloudOwner");
 
 195         expected.get().setCloudRegionId("lcpCloudRegionId");
 
 196         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.CloudRegion.class,
 
 197                 AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudConfig.getCloudOwner(),
 
 198                         cloudConfig.getLcpCloudRegionId()).depth(Depth.TWO));
 
 200         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION,
 
 201                 cloudConfig.getCloudOwner(), cloudConfig.getLcpCloudRegionId()).depth(Depth.TWO);
 
 202         bbInputSetupUtils.getCloudRegion(cloudConfig);
 
 204         verify(MOCK_aaiResourcesClient, times(1)).get(CloudRegion.class, expectedUri);
 
 208     public void testGetCloudRegionExceptionTest() {
 
 210         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 211         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
 
 213         RequestDetails requestDetails = new RequestDetails();
 
 214         requestDetails.setCloudConfiguration(cloudConfig);
 
 216         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 218         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfig);
 
 220         assertNull(cloudRegion);
 
 224     public void testGetCloudRegionEmptyId() {
 
 225         CloudConfiguration cloudConfig = new CloudConfiguration();
 
 226         cloudConfig.setLcpCloudRegionId("");
 
 228         RequestDetails requestDetails = new RequestDetails();
 
 229         requestDetails.setCloudConfiguration(cloudConfig);
 
 231         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfig);
 
 233         assertNull(cloudRegion);
 
 237     public void testGetCloudRegionEmptyConfiguration() {
 
 238         RequestDetails requestDetails = new RequestDetails();
 
 240         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(requestDetails.getCloudConfiguration());
 
 242         assertNull(cloudRegion);
 
 246     public void testGetAAIInstanceGroup() {
 
 247         Optional<org.onap.aai.domain.yang.InstanceGroup> expected =
 
 248                 Optional.of(new org.onap.aai.domain.yang.InstanceGroup());
 
 249         String instanceGroupId = "instanceGroupId";
 
 250         expected.get().setId(instanceGroupId);
 
 251         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.InstanceGroup.class,
 
 252                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId));
 
 253         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId);
 
 255         bbInputSetupUtils.getAAIInstanceGroup(instanceGroupId);
 
 256         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.InstanceGroup.class, expectedUri);
 
 260     public void testGetAAIInstanceGroupThrowNotFound() {
 
 261         String instanceGroupId = "instanceGroupId";
 
 262         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
 263         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.InstanceGroup.class,
 
 264                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId));
 
 266         org.onap.aai.domain.yang.InstanceGroup actual = bbInputSetupUtils.getAAIInstanceGroup(instanceGroupId);
 
 272     public void testGetAAICustomer() {
 
 273         Optional<org.onap.aai.domain.yang.Customer> expected = Optional.of(new org.onap.aai.domain.yang.Customer());
 
 274         String globalSubscriberId = "globalSubscriberId";
 
 275         expected.get().setGlobalCustomerId(globalSubscriberId);
 
 276         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.Customer.class,
 
 277                 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId));
 
 278         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId);
 
 280         bbInputSetupUtils.getAAICustomer(globalSubscriberId);
 
 281         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Customer.class, expectedUri);
 
 285     public void testGetAAICustomerThrowNotFound() {
 
 286         String globalSubscriberId = "globalSubscriberId";
 
 287         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
 288         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.Customer.class,
 
 289                 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId));
 
 291         org.onap.aai.domain.yang.Customer actual = bbInputSetupUtils.getAAICustomer(globalSubscriberId);
 
 297     public void testGetAAIServiceSubscription() {
 
 298         Optional<org.onap.aai.domain.yang.ServiceSubscription> expected =
 
 299                 Optional.of(new org.onap.aai.domain.yang.ServiceSubscription());
 
 300         String globalSubscriberId = "globalSubscriberId";
 
 301         String subscriptionServiceType = "subscriptionServiceType";
 
 302         expected.get().setServiceType(subscriptionServiceType);
 
 303         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.ServiceSubscription.class,
 
 304                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId,
 
 305                         subscriptionServiceType));
 
 306         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION,
 
 307                 globalSubscriberId, subscriptionServiceType);
 
 309         bbInputSetupUtils.getAAIServiceSubscription(globalSubscriberId, subscriptionServiceType);
 
 310         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceSubscription.class, expectedUri);
 
 314     public void testGetAAIServiceSubscriptionErrors() {
 
 315         String globalSubId = null;
 
 316         String subServiceType = null;
 
 317         org.onap.aai.domain.yang.ServiceSubscription actual =
 
 318                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId, subServiceType);
 
 321         String globalSubId2 = "";
 
 322         String subServiceType2 = "";
 
 323         org.onap.aai.domain.yang.ServiceSubscription actual2 =
 
 324                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId2, subServiceType2);
 
 327         String globalSubId3 = "";
 
 328         String subServiceType3 = null;
 
 329         org.onap.aai.domain.yang.ServiceSubscription actual3 =
 
 330                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId3, subServiceType3);
 
 333         String globalSubId4 = null;
 
 334         String subServiceType4 = "";
 
 335         org.onap.aai.domain.yang.ServiceSubscription actual4 =
 
 336                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId4, subServiceType4);
 
 341     public void testGetAAIServiceSubscriptionThrowNotFound() {
 
 342         String globalSubscriberId = "globalSubscriberId";
 
 343         String subscriptionServiceType = "subscriptionServiceType";
 
 344         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
 345         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.ServiceSubscription.class,
 
 346                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId,
 
 347                         subscriptionServiceType));
 
 348         org.onap.aai.domain.yang.ServiceSubscription actual =
 
 349                 bbInputSetupUtils.getAAIServiceSubscription(globalSubscriberId, subscriptionServiceType);
 
 354     public void testGetAAIServiceInstanceById() {
 
 355         String serviceInstanceId = "serviceInstanceId";
 
 357         ServiceInstance expectedServiceInstance = new ServiceInstance();
 
 359         doReturn(Optional.of(expectedServiceInstance)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 360                 isA(AAIResourceUri.class));
 
 362         ServiceInstance actualServiceInstance = bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId);
 
 364         assertThat(actualServiceInstance, sameBeanAs(expectedServiceInstance));
 
 368     public void testGetAAIServiceInstanceByIdThrowNotFound() {
 
 369         String serviceInstanceId = "serviceInstanceId";
 
 371         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 373         ServiceInstance actualServiceInstance = bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId);
 
 375         assertNull(actualServiceInstance);
 
 379     public void testGetAAIServiceInstanceByIdAndCustomer() {
 
 380         String globalCustomerId = "globalCustomerId";
 
 381         String serviceType = "serviceType";
 
 382         String serviceInstanceId = "serviceInstanceId";
 
 383         ServiceInstance expected = new ServiceInstance();
 
 384         expected.setServiceInstanceId(serviceInstanceId);
 
 385         doReturn(Optional.of(expected)).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 386         AAIResourceUri expectedUri = AAIUriFactory
 
 387                 .createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustomerId, serviceType, serviceInstanceId)
 
 389         this.bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer(globalCustomerId, serviceType, serviceInstanceId);
 
 391         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceInstance.class, expectedUri);
 
 396     public void testGetAAIServiceInstanceByIdAndCustomerThrowNotFound() {
 
 397         String globalCustomerId = "globalCustomerId";
 
 398         String serviceType = "serviceType";
 
 399         String serviceInstanceId = "serviceInstanceId";
 
 401         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
 402         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 403         ServiceInstance actual = this.bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer(globalCustomerId,
 
 404                 serviceType, serviceInstanceId);
 
 410     public void testGetAAIServiceInstanceByName() throws Exception {
 
 411         String serviceInstanceName = "serviceInstanceName";
 
 413         ServiceInstance expectedServiceInstance = new ServiceInstance();
 
 414         expectedServiceInstance.setServiceInstanceId("serviceInstanceId");
 
 416         ServiceSubscription serviceSubscription = new ServiceSubscription();
 
 417         serviceSubscription.setServiceType("serviceType");
 
 419         Customer customer = new Customer();
 
 420         customer.setGlobalCustomerId("globalCustomerId");
 
 421         customer.setServiceSubscription(serviceSubscription);
 
 423         ServiceInstances serviceInstances = new ServiceInstances();
 
 424         serviceInstances.getServiceInstance().add(expectedServiceInstance);
 
 426         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 427                 isA(AAIResourceUri.class));
 
 428         AAIResourceUri expectedUri = AAIUriFactory
 
 429                 .createResourceUri(AAIObjectPlurals.SERVICE_INSTANCE, customer.getGlobalCustomerId(),
 
 430                         customer.getServiceSubscription().getServiceType())
 
 431                 .queryParam("service-instance-name", serviceInstanceName).depth(Depth.TWO);
 
 432         bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
 
 434         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceInstances.class, expectedUri);
 
 438     public void testGetAAIServiceInstanceByNameException() throws Exception {
 
 439         expectedException.expect(Exception.class);
 
 441         String serviceInstanceName = "serviceInstanceName";
 
 443         ServiceInstance serviceInstance = new ServiceInstance();
 
 444         serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 446         ServiceSubscription serviceSubscription = new ServiceSubscription();
 
 447         serviceSubscription.setServiceType("serviceType");
 
 449         Customer customer = new Customer();
 
 450         customer.setGlobalCustomerId("globalCustomerId");
 
 451         customer.setServiceSubscription(serviceSubscription);
 
 453         ServiceInstances serviceInstances = new ServiceInstances();
 
 454         serviceInstances.getServiceInstance().add(serviceInstance);
 
 455         serviceInstances.getServiceInstance().add(serviceInstance);
 
 457         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 458                 isA(AAIResourceUri.class));
 
 460         bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
 
 464     public void testGetAAIServiceInstanceByNameNull() throws Exception {
 
 465         String serviceInstanceName = "serviceInstanceName";
 
 467         ServiceInstance serviceInstance = new ServiceInstance();
 
 468         serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 470         ServiceSubscription serviceSubscription = new ServiceSubscription();
 
 471         serviceSubscription.setServiceType("serviceType");
 
 473         Customer customer = new Customer();
 
 474         customer.setGlobalCustomerId("globalCustomerId");
 
 475         customer.setServiceSubscription(serviceSubscription);
 
 477         ServiceInstances serviceInstances = new ServiceInstances();
 
 478         serviceInstances.getServiceInstance().add(serviceInstance);
 
 479         serviceInstances.getServiceInstance().add(serviceInstance);
 
 481         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 483         ServiceInstance actualServiceInstance =
 
 484                 bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
 
 486         assertNull(actualServiceInstance);
 
 490     public void testGetOptionalAAIServiceInstanceByNameException() throws Exception {
 
 491         expectedException.expect(MultipleObjectsFoundException.class);
 
 492         expectedException.expectMessage(containsString(
 
 493                 "Multiple service instances found for customer-id: globalCustomerId, service-type: serviceType and service-instance-name: serviceInstanceId."));
 
 495         String globalCustomerId = "globalCustomerId";
 
 496         String serviceType = "serviceType";
 
 497         String serviceInstanceId = "serviceInstanceId";
 
 499         ServiceInstance serviceInstance = new ServiceInstance();
 
 500         serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 501         serviceInstance.setServiceType(serviceType);
 
 502         serviceInstance.setServiceInstanceName("serviceInstanceName");
 
 504         ServiceInstances serviceInstances = new ServiceInstances();
 
 505         serviceInstances.getServiceInstance().add(serviceInstance);
 
 506         serviceInstances.getServiceInstance().add(serviceInstance);
 
 508         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 509                 isA(AAIResourceUri.class));
 
 511         bbInputSetupUtils.getAAIServiceInstanceByName(globalCustomerId, serviceType, serviceInstanceId);
 
 515     public void testGetOptionalAAIServiceInstanceByNameNull() throws Exception {
 
 516         String globalCustomerId = "globalCustomerId";
 
 517         String serviceType = "serviceType";
 
 518         String serviceInstanceId = "serviceInstanceId";
 
 520         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 521         Optional<ServiceInstance> actual =
 
 522                 this.bbInputSetupUtils.getAAIServiceInstanceByName(globalCustomerId, serviceType, serviceInstanceId);
 
 524         assertThat(actual, sameBeanAs(Optional.empty()));
 
 528     public void testGetCatalogInstanceGroup() throws JsonParseException, JsonMappingException, IOException {
 
 529         String modelUUID = "modelUUID";
 
 531         org.onap.so.db.catalog.beans.InstanceGroup expectedInstanceGroup = mapper.readValue(
 
 532                 new File(RESOURCE_PATH + "InstanceGroup.json"), org.onap.so.db.catalog.beans.InstanceGroup.class);
 
 534         doReturn(expectedInstanceGroup).when(MOCK_catalogDbClient).getInstanceGroupByModelUUID(isA(String.class));
 
 536         org.onap.so.db.catalog.beans.InstanceGroup actualInstanceGroup =
 
 537                 bbInputSetupUtils.getCatalogInstanceGroup(modelUUID);
 
 539         assertThat(actualInstanceGroup, sameBeanAs(expectedInstanceGroup));
 
 543     public void testGetCollectionResourceInstanceGroupCustomization() {
 
 544         String modelCustomizationUUID = "modelCustomizationUUID";
 
 546         CollectionResourceInstanceGroupCustomization expectedCollection =
 
 547                 new CollectionResourceInstanceGroupCustomization();
 
 549         doReturn(Arrays.asList(expectedCollection)).when(MOCK_catalogDbClient)
 
 550                 .getCollectionResourceInstanceGroupCustomizationByModelCustUUID(modelCustomizationUUID);
 
 552         List<CollectionResourceInstanceGroupCustomization> actualCollection =
 
 553                 bbInputSetupUtils.getCollectionResourceInstanceGroupCustomization(modelCustomizationUUID);
 
 555         assertThat(actualCollection, sameBeanAs(Arrays.asList(expectedCollection)));
 
 559     public void testGetAAIGenericVnf() throws JsonParseException, JsonMappingException, IOException {
 
 560         String vnfId = "vnfId";
 
 562         GenericVnf expectedAaiVnf =
 
 563                 mapper.readValue(new File(RESOURCE_PATH + "aaiGenericVnfInput.json"), GenericVnf.class);
 
 565         doReturn(Optional.of(expectedAaiVnf)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 566                 isA(AAIResourceUri.class));
 
 567         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE);
 
 568         GenericVnf actualAaiVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
 
 570         assertThat(actualAaiVnf, sameBeanAs(expectedAaiVnf));
 
 572         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.GenericVnf.class, expectedUri);
 
 576     public void testGetAAIConfiguration() throws JsonParseException, JsonMappingException, IOException {
 
 577         String configurationId = "configurationId";
 
 579         Configuration expectedAaiConfiguration =
 
 580                 mapper.readValue(new File(RESOURCE_PATH + "ConfigurationInput.json"), Configuration.class);
 
 582         doReturn(Optional.of(expectedAaiConfiguration)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
 
 583                 isA(AAIResourceUri.class));
 
 584         AAIResourceUri expectedUri =
 
 585                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId).depth(Depth.ONE);
 
 586         bbInputSetupUtils.getAAIConfiguration(configurationId);
 
 588         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Configuration.class, expectedUri);
 
 592     public void testGetAAIGenericVnfThrowNotFound() throws JsonParseException, JsonMappingException, IOException {
 
 593         String vnfId = "vnfId";
 
 595         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
 597         GenericVnf actualAaiVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
 
 599         assertNull(actualAaiVnf);
 
 603     public void testGetAAIResourceDepthOne() {
 
 604         String vnfId = "vnfId";
 
 605         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId);
 
 606         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.ONE);
 
 607         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
 
 608         bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri);
 
 610         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
 
 611         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
 
 615     public void testGetAAIResourceDepthTwo() {
 
 616         String vnfId = "vnfId";
 
 617         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId);
 
 618         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.TWO);
 
 619         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
 
 620         bbInputSetupUtils.getAAIResourceDepthTwo(aaiResourceUri);
 
 622         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
 
 623         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
 
 627     public void getRelatedNetworkByNameFromServiceInstanceTest() throws Exception {
 
 628         Optional<L3Networks> expected = Optional.of(new L3Networks());
 
 629         L3Network network = new L3Network();
 
 630         network.setNetworkId("id123");
 
 631         network.setNetworkName("name123");
 
 632         expected.get().getL3Network().add(network);
 
 633         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
 
 634         Optional<L3Network> actual =
 
 635                 this.bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance("id123", "name123");
 
 636         assertEquals(actual.get().getNetworkId(), expected.get().getL3Network().get(0).getNetworkId());
 
 640     public void getRelatedNetworkByNameFromServiceInstanceMultipleNetworksExceptionTest() throws Exception {
 
 641         expectedException.expect(MultipleObjectsFoundException.class);
 
 642         expectedException.expectMessage(containsString(
 
 643                 "Multiple networks found for service-instance-id: serviceInstanceId and network-name: networkName."));
 
 645         String serviceInstanceId = "serviceInstanceId";
 
 646         String networkName = "networkName";
 
 648         L3Network network = new L3Network();
 
 649         network.setNetworkId("id123");
 
 650         network.setNetworkName("name123");
 
 652         L3Networks l3Networks = new L3Networks();
 
 653         l3Networks.getL3Network().add(network);
 
 654         l3Networks.getL3Network().add(network);
 
 655         Optional<L3Networks> optNetworks = Optional.of(l3Networks);
 
 657         doReturn(optNetworks).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
 
 659         bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(serviceInstanceId, networkName);
 
 663     public void getRelatedNetworkByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 664         String serviceInstanceId = "serviceInstanceId";
 
 665         String networkName = "networkName";
 
 667         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
 
 669         Optional<L3Network> actualNetwork =
 
 670                 bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(serviceInstanceId, networkName);
 
 672         assertEquals(Optional.empty(), actualNetwork);
 
 676     public void getRelatedServiceInstanceFromInstanceGroupTest() throws Exception {
 
 677         Optional<ServiceInstances> expected = Optional.of(new ServiceInstances());
 
 678         ServiceInstance serviceInstance = new ServiceInstance();
 
 679         serviceInstance.setServiceInstanceId("serviceInstanceId");
 
 680         serviceInstance.setServiceInstanceName("serviceInstanceName");
 
 681         expected.get().getServiceInstance().add(serviceInstance);
 
 683         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class), any(AAIResourceUri.class));
 
 684         Optional<ServiceInstance> actual = this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
 
 685         assertEquals(actual.get().getServiceInstanceId(),
 
 686                 expected.get().getServiceInstance().get(0).getServiceInstanceId());
 
 690     public void getRelatedServiceInstanceFromInstanceGroupMultipleTest() throws Exception {
 
 691         expectedException.expect(MultipleObjectsFoundException.class);
 
 692         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
 
 693         ServiceInstance si1 = Mockito.mock(ServiceInstance.class);
 
 694         ServiceInstance si2 = Mockito.mock(ServiceInstance.class);
 
 695         serviceInstances.get().getServiceInstance().add(si1);
 
 696         serviceInstances.get().getServiceInstance().add(si2);
 
 698         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
 
 699                 any(AAIResourceUri.class));
 
 700         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
 
 704     public void getRelatedServiceInstanceFromInstanceGroupNotFoundTest() throws Exception {
 
 705         expectedException.expect(NoServiceInstanceFoundException.class);
 
 706         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
 
 708         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
 
 709                 any(AAIResourceUri.class));
 
 710         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
 
 714     public void getRelatedVnfByNameFromServiceInstanceTest() throws Exception {
 
 715         Optional<GenericVnfs> expected = Optional.of(new GenericVnfs());
 
 716         GenericVnf vnf = new GenericVnf();
 
 717         vnf.setVnfId("id123");
 
 718         vnf.setVnfName("name123");
 
 719         expected.get().getGenericVnf().add(vnf);
 
 720         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
 
 721         Optional<GenericVnf> actual = this.bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance("id123", "name123");
 
 722         assertEquals(actual.get().getVnfId(), expected.get().getGenericVnf().get(0).getVnfId());
 
 726     public void getRelatedVnfByNameFromServiceInstanceMultipleVnfsExceptionTest() throws Exception {
 
 727         expectedException.expect(MultipleObjectsFoundException.class);
 
 728         expectedException.expectMessage(containsString(
 
 729                 "Multiple vnfs found for service-instance-id: serviceInstanceId and vnf-name: vnfName."));
 
 731         String serviceInstanceId = "serviceInstanceId";
 
 732         String vnfName = "vnfName";
 
 734         GenericVnf vnf = new GenericVnf();
 
 735         vnf.setVnfId("id123");
 
 736         vnf.setVnfName("name123");
 
 738         GenericVnfs vnfs = new GenericVnfs();
 
 739         vnfs.getGenericVnf().add(vnf);
 
 740         vnfs.getGenericVnf().add(vnf);
 
 742         Optional<GenericVnfs> optVnfs = Optional.of(vnfs);
 
 744         doReturn(optVnfs).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
 
 746         bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName);
 
 750     public void getRelatedVnfByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 751         String serviceInstanceId = "serviceInstanceId";
 
 752         String vnfName = "vnfName";
 
 754         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
 
 756         Optional<GenericVnf> actualVnf =
 
 757                 this.bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName);
 
 759         assertEquals(actualVnf, Optional.empty());
 
 763     public void getRelatedVolumeGroupByNameFromVnfTest() throws Exception {
 
 764         Optional<VolumeGroups> expected = Optional.of(new VolumeGroups());
 
 765         VolumeGroup volumeGroup = new VolumeGroup();
 
 766         volumeGroup.setVolumeGroupId("id123");
 
 767         volumeGroup.setVolumeGroupName("name123");
 
 768         expected.get().getVolumeGroup().add(volumeGroup);
 
 769         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 770         Optional<VolumeGroup> actual = this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123");
 
 771         assertEquals(actual.get().getVolumeGroupId(), expected.get().getVolumeGroup().get(0).getVolumeGroupId());
 
 775     public void getRelatedVolumeGroupByNameFromVnfMultipleVolumeGroupsExceptionTest() throws Exception {
 
 776         expectedException.expect(MultipleObjectsFoundException.class);
 
 777         expectedException.expectMessage(containsString(
 
 778                 "Multiple volume-groups found for vnf-id: vnfId and volume-group-name: volumeGroupName."));
 
 781         String vnfId = "vnfId";
 
 782         String volumeGroupName = "volumeGroupName";
 
 784         VolumeGroup volumeGroup = new VolumeGroup();
 
 785         volumeGroup.setVolumeGroupId("id123");
 
 786         volumeGroup.setVolumeGroupName("name123");
 
 788         VolumeGroups volumeGroups = new VolumeGroups();
 
 789         volumeGroups.getVolumeGroup().add(volumeGroup);
 
 790         volumeGroups.getVolumeGroup().add(volumeGroup);
 
 791         Optional<VolumeGroups> optVolumeGroups = Optional.of(volumeGroups);
 
 793         doReturn(optVolumeGroups).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 795         bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
 
 799     public void getRelatedVolumeGroupByNameFromVnfNotFoundTest() throws Exception {
 
 800         String vnfId = "vnfId";
 
 801         String volumeGroupName = "volumeGroupName";
 
 803         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 805         Optional<VolumeGroup> actualVolumeGroup =
 
 806                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
 
 808         assertEquals(actualVolumeGroup, Optional.empty());
 
 812     public void getRelatedVolumeGroupByNameFromVfModuleTest() throws Exception {
 
 813         Optional<VolumeGroups> expected = Optional.of(new VolumeGroups());
 
 814         VolumeGroup volumeGroup = new VolumeGroup();
 
 815         volumeGroup.setVolumeGroupId("id123");
 
 816         volumeGroup.setVolumeGroupName("name123");
 
 817         expected.get().getVolumeGroup().add(volumeGroup);
 
 818         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 819         Optional<VolumeGroup> actual =
 
 820                 this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "name123");
 
 821         assertEquals(actual.get().getVolumeGroupId(), expected.get().getVolumeGroup().get(0).getVolumeGroupId());
 
 825     public void getRelatedVolumeGroupFromVfModuleMultipleVolumeGroupsExceptionTest() throws Exception {
 
 826         expectedException.expect(Exception.class);
 
 828         String vnfId = "vnfId";
 
 829         String volumeGroupId = "volumeGroupId";
 
 831         VolumeGroup volumeGroup = new VolumeGroup();
 
 832         volumeGroup.setVolumeGroupId("id123");
 
 833         volumeGroup.setVolumeGroupName("name123");
 
 835         VolumeGroups expectedVolumeGroup = new VolumeGroups();
 
 836         expectedVolumeGroup.getVolumeGroup().add(volumeGroup);
 
 837         expectedVolumeGroup.getVolumeGroup().add(volumeGroup);
 
 839         doReturn(expectedVolumeGroup).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class),
 
 840                 any(AAIResourceUri.class));
 
 842         bbInputSetupUtils.getRelatedVolumeGroupFromVfModule(vnfId, volumeGroupId);
 
 846     public void getRelatedVolumeGroupFromVfModuleNotFoundTest() throws Exception {
 
 847         String vnfId = "vnfId";
 
 848         String volumeGroupId = "volumeGroupId";
 
 850         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 852         Optional<VolumeGroup> actualVolumeGroup =
 
 853                 bbInputSetupUtils.getRelatedVolumeGroupFromVfModule(vnfId, volumeGroupId);
 
 855         assertEquals(actualVolumeGroup, Optional.empty());
 
 859     public void getRelatedVolumeGroupFromVfModuleTest() throws Exception {
 
 860         Optional<VolumeGroups> expected = Optional.of(new VolumeGroups());
 
 861         VolumeGroup volumeGroup = new VolumeGroup();
 
 862         volumeGroup.setVolumeGroupId("id123");
 
 863         expected.get().getVolumeGroup().add(volumeGroup);
 
 864         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 865         Optional<VolumeGroup> actual = this.bbInputSetupUtils.getRelatedVolumeGroupFromVfModule("id123", "id123");
 
 866         assertEquals(actual.get().getVolumeGroupId(), expected.get().getVolumeGroup().get(0).getVolumeGroupId());
 
 870     public void getRelatedVolumeGroupByNameFromVfModuleMultipleVolumeGroupsExceptionTest() throws Exception {
 
 871         expectedException.expect(MultipleObjectsFoundException.class);
 
 872         expectedException.expectMessage(containsString(
 
 873                 "Multiple voulme-groups found for vnf-id: vnfId, vf-module-id: volumeGroupId and volume-group-name: volumeGroupName."));
 
 874         String vnfId = "vnfId";
 
 875         String volumeGroupId = "volumeGroupId";
 
 876         String volumeGroupName = "volumeGroupName";
 
 878         VolumeGroup volumeGroup = new VolumeGroup();
 
 879         volumeGroup.setVolumeGroupId("id123");
 
 880         volumeGroup.setVolumeGroupName("name123");
 
 882         VolumeGroups volumeGroups = new VolumeGroups();
 
 883         volumeGroups.getVolumeGroup().add(volumeGroup);
 
 884         volumeGroups.getVolumeGroup().add(volumeGroup);
 
 886         Optional<VolumeGroups> optVolumeGroups = Optional.of(volumeGroups);
 
 888         doReturn(optVolumeGroups).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 890         bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnfId, volumeGroupId, volumeGroupName);
 
 894     public void getRelatedVolumeGroupByNameFromVfModuleNotFoundTest() throws Exception {
 
 895         String vnfId = "vnfId";
 
 896         String volumeGroupId = "volumeGroupId";
 
 897         String volumeGroupName = "volumeGroupName";
 
 899         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
 
 901         Optional<VolumeGroup> actualVolumeGroup =
 
 902                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnfId, volumeGroupId, volumeGroupName);
 
 904         assertEquals(actualVolumeGroup, Optional.empty());
 
 909     public void loadOriginalFlowExecutionPathTest() throws Exception {
 
 911         String requestId = "123";
 
 912         String flowsToExecuteString =
 
 913                 "[{\"buildingBlock\":{\"mso-id\":\"2f9ddc4b-4dcf-4129-a35f-be1625ae0176\",\"bpmn-flow-name\":\"DeactivateFabricConfigurationBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}},{\"buildingBlock\":{\"mso-id\":\"1ca5584e-38a9-4c3f-a4b4-99b0d42089ba\",\"bpmn-flow-name\":\"UnassignFabricConfigurationBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}},{\"buildingBlock\":{\"mso-id\":\"68d16097-4810-477d-803b-8322106106ef\",\"bpmn-flow-name\":\"DeactivateVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null},{\"buildingBlock\":{\"mso-id\":\"0b02eb09-bc23-4329-b19e-716dcca4e4a6\",\"bpmn-flow-name\":\"DeleteVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null},{\"buildingBlock\":{\"mso-id\":\"bcf95d05-0782-44ff-920d-d5100525c275\",\"bpmn-flow-name\":\"UnassignVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null}]";
 
 914         ObjectMapper om = new ObjectMapper();
 
 915         List<ExecuteBuildingBlock> expectedFlowsToExecute = null;
 
 917             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
 918             expectedFlowsToExecute = Arrays.asList(asArray);
 
 919         } catch (Exception e) {
 
 920             // TODO Auto-generated catch block
 
 924         InfraActiveRequests request = new InfraActiveRequests();
 
 925         request.setRequestId("requestId");
 
 926         request.setOriginalRequestId("originalRequestId");
 
 927         doReturn(request).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(anyString());
 
 928         RequestProcessingData rpd = new RequestProcessingData();
 
 929         rpd.setValue(flowsToExecuteString);
 
 930         doReturn(rpd).when(MOCK_requestsDbClient).getRequestProcessingDataBySoRequestIdAndName(anyString(),
 
 933         List<ExecuteBuildingBlock> flowsToExecute = bbInputSetupUtils.loadOriginalFlowExecutionPath(requestId);
 
 934         assertEquals(expectedFlowsToExecute.size(), flowsToExecute.size());
 
 938     public void getRelatedConfigurationByNameFromServiceInstanceExceptionTest() throws Exception {
 
 939         Configuration configuration = new Configuration();
 
 940         configuration.setConfigurationId("id123");
 
 942         Configurations configurations = new Configurations();
 
 943         configurations.getConfiguration().add(configuration);
 
 944         configurations.getConfiguration().add(configuration);
 
 946         Optional<Configurations> optConfigurations = Optional.of(configurations);
 
 948         doReturn(optConfigurations).when(MOCK_aaiResourcesClient).get(eq(Configurations.class),
 
 949                 any(AAIResourceUri.class));
 
 951         expectedException.expect(MultipleObjectsFoundException.class);
 
 952         this.bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
 
 956     public void getRelatedConfigurationByNameFromServiceInstanceNotFoundTest() throws Exception {
 
 957         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(Configurations.class),
 
 958                 any(AAIResourceUri.class));
 
 959         Optional<Configuration> actualConfiguration =
 
 960                 bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
 
 961         assertEquals(actualConfiguration, Optional.empty());
 
 965     public void getRelatedConfigurationByNameFromServiceInstanceTest() throws Exception {
 
 966         Optional<Configurations> expected = Optional.of(new Configurations());
 
 967         Configuration configuration = new Configuration();
 
 968         configuration.setConfigurationId("id123");
 
 969         expected.get().getConfiguration().add(configuration);
 
 970         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(Configurations.class), any(AAIResourceUri.class));
 
 971         Optional<Configuration> actual =
 
 972                 this.bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
 
 973         assertEquals(actual.get().getConfigurationId(), expected.get().getConfiguration().get(0).getConfigurationId());
 
 977     public void existsAAIVfModuleGloballyByNameTest() throws Exception {
 
 978         AAIResourceUri expectedUri =
 
 979                 AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", "testVfModule");
 
 980         bbInputSetupUtils.existsAAIVfModuleGloballyByName("testVfModule");
 
 981         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 985     public void existsAAIConfigurationGloballyByNameTest() throws Exception {
 
 986         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
 
 987                 .queryParam("configuration-name", "testConfig");
 
 988         bbInputSetupUtils.existsAAIConfigurationGloballyByName("testConfig");
 
 989         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
 993     public void existsAAINetworksGloballyByNameTest() throws Exception {
 
 994         AAIResourceUri expectedUri =
 
 995                 AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", "testNetwork");
 
 996         bbInputSetupUtils.existsAAINetworksGloballyByName("testNetwork");
 
 997         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
1001     public void existsAAIVolumeGroupGloballyByNameTest() throws Exception {
 
1002         AAIResourceUri expectedUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
 
1003                 .queryParam("volume-group-name", "testVoumeGroup");
 
1004         bbInputSetupUtils.existsAAIVolumeGroupGloballyByName("testVoumeGroup");
 
1005         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
 
1009     public void shouldChangeInfraActiveRequestVnfId() throws IOException {
 
1010         final String vnfId = "vnfId";
 
1011         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
1013         bbInputSetupUtils.updateInfraActiveRequestVnfId(infraActiveRequests, vnfId);
 
1015         assertEquals(infraActiveRequests.getVnfId(), vnfId);
 
1019     public void shouldChangeInfraActiveRequestVfModuleId() throws IOException {
 
1020         final String vfModuleId = "vfModuleId";
 
1021         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
1023         bbInputSetupUtils.updateInfraActiveRequestVfModuleId(infraActiveRequests, vfModuleId);
 
1025         assertEquals(infraActiveRequests.getVfModuleId(), vfModuleId);
 
1029     public void shouldChangeInfraActiveRequestVolumeGroupId() throws IOException {
 
1030         final String volumeGroupId = "volumeGroupId";
 
1031         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
1033         bbInputSetupUtils.updateInfraActiveRequestVolumeGroupId(infraActiveRequests, volumeGroupId);
 
1035         assertEquals(infraActiveRequests.getVolumeGroupId(), volumeGroupId);
 
1039     public void shouldChangeInfraActiveRequestNetworkId() throws IOException {
 
1040         final String networkId = "activeRequestNetworkId";
 
1041         InfraActiveRequests infraActiveRequests = loadExpectedInfraActiveRequest();
 
1043         bbInputSetupUtils.updateInfraActiveRequestNetworkId(infraActiveRequests, networkId);
 
1045         assertEquals(infraActiveRequests.getNetworkId(), networkId);
 
1049     public void getAAIVpnBindingNullTest() {
 
1050         assertNull(bbInputSetupUtils.getAAIVpnBinding("vpnBindingId"));
 
1054     public void getAAIVolumeGroupNullTest() {
 
1055         VolumeGroup actualAaiVnf =
 
1056                 bbInputSetupUtils.getAAIVolumeGroup("cloudOwnerId", "cloudRegionId", "volumeGroupId");
 
1057         assertNull(actualAaiVnf);
 
1061     public void getAAIVfModuleNullTest() {
 
1062         assertNull(bbInputSetupUtils.getAAIVfModule("vnfId", "vfModuleId"));
 
1066     public void getAAIL3NetworkNullTest() {
 
1067         assertNull(bbInputSetupUtils.getAAIL3Network("networkId"));
 
1071     public void getAICVpnBindingFromNetwork_noVpnBindingTest() throws IOException {
 
1072         L3Network l3Network =
 
1073                 mapper.readValue(new File(RESOURCE_PATH + "aaiL3NetworkInputWithSubnets.json"), L3Network.class);
 
1075         Optional<VpnBinding> actual = bbInputSetupUtils.getAICVpnBindingFromNetwork(l3Network);
 
1076         assertEquals(actual, Optional.empty());
 
1080     public void getAAIServiceInstancesGloballyByName_noAAIResourceTest() {
 
1081         final String serviceInstanceName = "serviceInstanceName";
 
1083         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
1084         ServiceInstances actualServiceInstances =
 
1085                 bbInputSetupUtils.getAAIServiceInstancesGloballyByName(serviceInstanceName);
 
1087         assertNull(actualServiceInstances);
 
1091     public void getAAIVnfsGloballyByName_noAAIResourceTest() {
 
1092         final String vnfName = "vnfName";
 
1094         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
 
1095         GenericVnfs actualGenericVnfs = bbInputSetupUtils.getAAIVnfsGloballyByName(vnfName);
 
1097         assertNull(actualGenericVnfs);
 
1100     private InfraActiveRequests loadExpectedInfraActiveRequest() throws IOException {
 
1101         return mapper.readValue(new File(RESOURCE_PATH + "InfraActiveRequestExpected.json"), InfraActiveRequests.class);