2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Modifications Copyright (c) 2019 Samsung
 
   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.infrastructure.workflow.tasks;
 
  25 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 
  26 import static org.hamcrest.CoreMatchers.containsString;
 
  27 import static org.hamcrest.CoreMatchers.equalTo;
 
  28 import static org.junit.Assert.assertEquals;
 
  29 import static org.junit.Assert.assertFalse;
 
  30 import static org.junit.Assert.assertNotNull;
 
  31 import static org.junit.Assert.assertNull;
 
  32 import static org.junit.Assert.assertThat;
 
  33 import static org.junit.Assert.assertTrue;
 
  34 import static org.junit.Assert.fail;
 
  35 import static org.mockito.ArgumentMatchers.anyObject;
 
  36 import static org.mockito.ArgumentMatchers.anyString;
 
  37 import static org.mockito.ArgumentMatchers.isA;
 
  38 import static org.mockito.Mockito.doReturn;
 
  39 import static org.mockito.Mockito.when;
 
  40 import com.fasterxml.jackson.databind.ObjectMapper;
 
  41 import java.io.IOException;
 
  42 import java.net.MalformedURLException;
 
  43 import java.nio.file.Files;
 
  44 import java.nio.file.Paths;
 
  45 import java.util.ArrayList;
 
  46 import java.util.Arrays;
 
  47 import java.util.HashMap;
 
  48 import java.util.List;
 
  50 import java.util.Optional;
 
  51 import java.util.UUID;
 
  52 import org.camunda.bpm.engine.delegate.BpmnError;
 
  53 import org.camunda.bpm.engine.delegate.DelegateExecution;
 
  54 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
 
  55 import org.javatuples.Pair;
 
  56 import org.junit.Before;
 
  57 import org.junit.Ignore;
 
  58 import org.junit.Rule;
 
  59 import org.junit.Test;
 
  60 import org.junit.rules.ExpectedException;
 
  61 import org.mockito.InjectMocks;
 
  62 import org.mockito.Mock;
 
  63 import org.mockito.Spy;
 
  64 import org.onap.aai.domain.yang.GenericVnf;
 
  65 import org.onap.aai.domain.yang.GenericVnfs;
 
  66 import org.onap.aai.domain.yang.L3Network;
 
  67 import org.onap.aai.domain.yang.Relationship;
 
  68 import org.onap.aai.domain.yang.RelationshipList;
 
  69 import org.onap.aai.domain.yang.ServiceInstance;
 
  70 import org.onap.aai.domain.yang.ServiceInstances;
 
  71 import org.onap.aai.domain.yang.VfModule;
 
  72 import org.onap.aai.domain.yang.VfModules;
 
  73 import org.onap.aai.domain.yang.VolumeGroup;
 
  74 import org.onap.so.bpmn.BaseTaskTest;
 
  75 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
 
  76 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 
  77 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 
  78 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 
  79 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
 
  80 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
 
  81 import org.onap.so.client.aai.AAIObjectType;
 
  82 import org.onap.so.client.aai.entities.AAIResultWrapper;
 
  83 import org.onap.so.client.aai.entities.Relationships;
 
  84 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 
  85 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
 
  86 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
 
  87 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 
  88 import org.onap.so.db.catalog.beans.CollectionResource;
 
  89 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
 
  90 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 
  91 import org.onap.so.db.catalog.beans.ConfigurationResource;
 
  92 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 
  93 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 
  94 import org.onap.so.db.catalog.beans.HeatEnvironment;
 
  95 import org.onap.so.db.catalog.beans.HeatTemplate;
 
  96 import org.onap.so.db.catalog.beans.InstanceGroup;
 
  97 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 
  98 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
 
  99 import org.onap.so.db.catalog.beans.Service;
 
 100 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 
 101 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
 
 102 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
 
 103 import org.onap.so.serviceinstancebeans.ModelInfo;
 
 104 import org.onap.so.serviceinstancebeans.RequestDetails;
 
 105 import org.onap.so.serviceinstancebeans.RequestParameters;
 
 106 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 
 107 import org.onap.so.serviceinstancebeans.SubscriberInfo;
 
 108 import org.springframework.core.env.Environment;
 
 110 public class WorkflowActionTest extends BaseTaskTest {
 
 114     protected Environment environment;
 
 116     protected WorkflowAction workflowAction;
 
 117     private DelegateExecution execution;
 
 121     protected WorkflowAction SPY_workflowAction;
 
 124     public ExpectedException thrown = ExpectedException.none();
 
 126     private String RESOURCE_PATH = "src/test/resources/__files/";
 
 128     private List<OrchestrationFlow> replaceVfModuleOrchFlows =
 
 129             createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
 130                     "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
 131                     "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
 132                     "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 133     private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
 
 134             "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
 
 135             "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 136             "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 139     public void before() throws Exception {
 
 140         execution = new DelegateExecutionFake();
 
 141         org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
 
 142         servInstance.setServiceInstanceId("TEST");
 
 143         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
 
 144         workflowAction.setBbInputSetupUtils(bbSetupUtils);
 
 145         workflowAction.setBbInputSetup(bbInputSetup);
 
 152     public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
 
 153         String gAction = "createInstance";
 
 154         String resource = "Network";
 
 155         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 156         execution.setVariable("requestAction", gAction);
 
 158                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 159         execution.setVariable("bpmnRequest", bpmnRequest);
 
 160         execution.setVariable("aLaCarte", true);
 
 161         execution.setVariable("apiVersion", "7");
 
 162         execution.setVariable("requestUri", "v6/networks/123");
 
 164         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 165         List<OrchestrationFlow> orchFlows =
 
 166                 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 167         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 169         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 170                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 171         workflowAction.selectExecutionList(execution);
 
 172         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 173         assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 177     public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
 
 178         String gAction = "deleteInstance";
 
 179         String resource = "Network";
 
 180         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 181         execution.setVariable("requestAction", gAction);
 
 183                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 184         execution.setVariable("bpmnRequest", bpmnRequest);
 
 185         execution.setVariable("aLaCarte", true);
 
 186         execution.setVariable("apiVersion", "7");
 
 187         execution.setVariable("requestUri", "v6/networks/123");
 
 189         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 190         List<OrchestrationFlow> orchFlows =
 
 191                 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 192         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 194         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 195                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 196         workflowAction.selectExecutionList(execution);
 
 197         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 198         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 202     public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
 
 203         String gAction = "createInstance";
 
 204         String resource = "Service";
 
 205         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 206         execution.setVariable("requestAction", gAction);
 
 208                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 209         execution.setVariable("bpmnRequest", bpmnRequest);
 
 210         execution.setVariable("aLaCarte", true);
 
 211         execution.setVariable("apiVersion", "7");
 
 212         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 215         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 216         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 217         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 219         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 220                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 221         workflowAction.selectExecutionList(execution);
 
 222         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 223         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 227      * SERVICE MACRO TESTS
 
 230     public void selectExecutionListServiceMacroAssignTest() throws Exception {
 
 231         String gAction = "assignInstance";
 
 232         String resource = "Service";
 
 233         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 234         execution.setVariable("requestAction", gAction);
 
 236                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 237         execution.setVariable("bpmnRequest", bpmnRequest);
 
 238         execution.setVariable("aLaCarte", false);
 
 239         execution.setVariable("apiVersion", "7");
 
 240         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 243         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 244         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 245                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 246         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 248         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 249         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 250         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 251         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 252         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 253         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 254         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 255         vfModuleCustomization.setVfModule(vfModule);
 
 257         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 258         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 259         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 260         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 261         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 262         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 263         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 264         vfModuleCustomization2.setVfModule(vfModule2);
 
 266         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 267         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 269         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 270                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 271         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 272                 .thenReturn(vfModuleCustomization);
 
 273         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 274                 .thenReturn(vfModuleCustomization2);
 
 275         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 276                 .thenReturn(vfModuleCustomization3);
 
 277         workflowAction.selectExecutionList(execution);
 
 278         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 279         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 280                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 284     public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
 
 285         String gAction = "assignInstance";
 
 286         String resource = "Service";
 
 287         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 288         execution.setVariable("requestAction", gAction);
 
 289         String bpmnRequest = new String(
 
 290                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
 
 291         execution.setVariable("bpmnRequest", bpmnRequest);
 
 292         execution.setVariable("aLaCarte", false);
 
 293         execution.setVariable("apiVersion", "7");
 
 294         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 297         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 298         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 299                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 300         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 302         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 303         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 304         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 305         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 306         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 307         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 308         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 309         vfModuleCustomization.setVfModule(vfModule);
 
 311         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 312         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 313         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 314         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 315         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 316         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 317         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 318         vfModuleCustomization2.setVfModule(vfModule2);
 
 320         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 321         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 323         when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
 
 324         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 325                 false, "att-aic")).thenReturn(northBoundRequest);
 
 326         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 327                 .thenReturn(vfModuleCustomization);
 
 328         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 329                 .thenReturn(vfModuleCustomization2);
 
 330         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 331                 .thenReturn(vfModuleCustomization3);
 
 332         workflowAction.selectExecutionList(execution);
 
 333         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 334         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 335                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 339     public void selectExecutionListServiceMacroActivateTest() throws Exception {
 
 340         String gAction = "activateInstance";
 
 341         String resource = "Service";
 
 342         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 343         execution.setVariable("requestAction", gAction);
 
 344         String bpmnRequest = new String(Files
 
 345                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 346         execution.setVariable("bpmnRequest", bpmnRequest);
 
 347         execution.setVariable("aLaCarte", false);
 
 348         execution.setVariable("apiVersion", "7");
 
 349         execution.setVariable("requestUri", "v6/serviceInstances/si0");
 
 352         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 353         List<OrchestrationFlow> orchFlows =
 
 354                 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 355                         "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
 
 356         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 358         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 359         serviceInstanceAAI.setServiceInstanceId("si0");
 
 360         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 361                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 362         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 363                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 364         vnf.setVnfId("vnf0");
 
 367         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 368         vnf.getVfModules().add(vfModule);
 
 369         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 370         vnf.getVfModules().add(vfModule2);
 
 372         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 373                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 374         volumeGroup.setVolumeGroupId("volumeGroup0");
 
 375         vnf.getVolumeGroups().add(volumeGroup);
 
 377         serviceInstanceMSO.getVnfs().add(vnf);
 
 379         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
 
 380         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 381         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 382                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 383         workflowAction.selectExecutionList(execution);
 
 384         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 385         assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 386                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 387                 "ActivateServiceInstanceBB");
 
 388         assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
 
 389         assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
 
 390         assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
 
 391         assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
 
 392         assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
 
 393         assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
 
 394         assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
 
 395         assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
 
 400     public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
 
 401         String gAction = "deactivateInstance";
 
 402         String resource = "Service";
 
 403         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 404         execution.setVariable("requestAction", gAction);
 
 405         String bpmnRequest = new String(Files
 
 406                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 407         execution.setVariable("bpmnRequest", bpmnRequest);
 
 408         execution.setVariable("aLaCarte", false);
 
 409         execution.setVariable("apiVersion", "7");
 
 410         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 413         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 414         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
 
 415         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 417         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 418                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 419         workflowAction.selectExecutionList(execution);
 
 420         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 421         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
 
 425     public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
 
 426         String gAction = "createInstance";
 
 427         String resource = "Service";
 
 428         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 429         execution.setVariable("requestAction", gAction);
 
 430         String bpmnRequest = new String(Files
 
 431                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 432         execution.setVariable("bpmnRequest", bpmnRequest);
 
 433         execution.setVariable("aLaCarte", false);
 
 434         execution.setVariable("apiVersion", "7");
 
 435         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 438         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 439         northBoundRequest.setIsToplevelflow(true);
 
 440         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 441                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 442                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 443                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 444                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 445         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 447         Service service = new Service();
 
 448         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 449         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 450                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 451         workflowAction.selectExecutionList(execution);
 
 452         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 453         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 457     public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
 
 458         String gAction = "createInstance";
 
 459         String resource = "Service";
 
 460         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 461         execution.setVariable("requestAction", gAction);
 
 462         String bpmnRequest = new String(Files
 
 463                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 464         execution.setVariable("bpmnRequest", bpmnRequest);
 
 465         execution.setVariable("aLaCarte", false);
 
 466         execution.setVariable("apiVersion", "7");
 
 467         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 470         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 471         northBoundRequest.setIsToplevelflow(true);
 
 472         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 473                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 474                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 475                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 476                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 477         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 479         Service service = new Service();
 
 480         NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
 
 481         networkCustomization.setModelCustomizationUUID("1234");
 
 482         service.getNetworkCustomizations().add(networkCustomization);
 
 483         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 484         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 485                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 486         workflowAction.selectExecutionList(execution);
 
 487         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 488         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
 
 489                 "ActivateNetworkBB", "ActivateServiceInstanceBB");
 
 493     public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
 
 494         String gAction = "createInstance";
 
 495         String resource = "Service";
 
 496         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 497         execution.setVariable("requestAction", gAction);
 
 498         String bpmnRequest = new String(Files
 
 499                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 500         execution.setVariable("bpmnRequest", bpmnRequest);
 
 501         execution.setVariable("aLaCarte", false);
 
 502         execution.setVariable("apiVersion", "7");
 
 503         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 506         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 507         northBoundRequest.setIsToplevelflow(true);
 
 508         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 509                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 510                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 511                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 512                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 513         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 515         Service service = new Service();
 
 516         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
 517         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
 518         networkCust.setModelCustomizationUUID("123");
 
 519         networkCustomizations.add(networkCust);
 
 520         service.setNetworkCustomizations(networkCustomizations);
 
 521         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
 522                 new NetworkCollectionResourceCustomization();
 
 523         collectionResourceCustomization.setModelCustomizationUUID("123");
 
 525         CollectionResource collectionResource = new CollectionResource();
 
 526         collectionResource.setToscaNodeType("NetworkCollection");
 
 527         InstanceGroup instanceGroup = new InstanceGroup();
 
 528         instanceGroup.setToscaNodeType("NetworkCollectionResource");
 
 529         instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
 
 530         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
 
 531                 new CollectionNetworkResourceCustomization();
 
 532         collectionNetworkResourceCust.setModelCustomizationUUID("123");
 
 533         collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
 
 534         instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
 
 535         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
 536         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
 537                 new CollectionResourceInstanceGroupCustomization();
 
 538         collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
 
 539         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
 540         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
 541         collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
 
 542         collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
 
 543         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
 544         collectionResource.setInstanceGroup(instanceGroup);
 
 545         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
 546         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 547         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 548         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
 549                 .getNetworkCollectionResourceCustomizationByID("123");
 
 550         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 551                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 552         workflowAction.selectExecutionList(execution);
 
 553         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 554         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
 
 555                 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 556                 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
 
 557                 "ActivateServiceInstanceBB");
 
 558         assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 559         assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 560         assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 561         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 562                 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
 
 564                         && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
 
 567         assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 568         assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 569         assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 570         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 571                 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
 
 573                         && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
 
 576         assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 577         assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 578         assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 579         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 580                 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
 
 582                         && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
 
 588     public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
 
 589         String gAction = "createInstance";
 
 590         String resource = "Service";
 
 591         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 592         execution.setVariable("requestAction", gAction);
 
 594                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 595         execution.setVariable("bpmnRequest", bpmnRequest);
 
 596         execution.setVariable("aLaCarte", false);
 
 597         execution.setVariable("apiVersion", "7");
 
 598         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 601         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 602         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 603                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 604                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 605                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 606                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 607         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 609         Service service = new Service();
 
 610         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 612         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 613         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 614         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 615         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 616         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 617         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 618         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 619         vfModuleCustomization.setVfModule(vfModule);
 
 621         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 622         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 623         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 624         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 625         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 626         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 627         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 628         vfModuleCustomization2.setVfModule(vfModule2);
 
 630         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 631         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 633         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 634                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 635         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 636                 .thenReturn(vfModuleCustomization);
 
 637         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 638                 .thenReturn(vfModuleCustomization2);
 
 639         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 640                 .thenReturn(vfModuleCustomization3);
 
 641         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 642         workflowAction.selectExecutionList(execution);
 
 643         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 644         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 645                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
 
 646                 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
 
 647                 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 648                 "ActivateServiceInstanceBB");
 
 649         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 650         int randomUUIDLength = UUID.randomUUID().toString().length();
 
 651         assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
 
 652         assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
 
 653         assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
 
 654         assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
 
 655         assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
 
 656         assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
 
 657         assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
 
 658         assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
 
 659         assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
 
 660         assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
 
 661         assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
 
 662         assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
 
 663         assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
 
 664         assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
 
 665         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 666         assertEquals(true, execution.getVariable("homing"));
 
 670     public void selectExecutionListServiceMacroDeleteTest() throws Exception {
 
 671         String gAction = "deleteInstance";
 
 672         String resource = "Service";
 
 673         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 674         execution.setVariable("requestAction", gAction);
 
 675         String bpmnRequest = new String(Files
 
 676                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 677         execution.setVariable("bpmnRequest", bpmnRequest);
 
 678         execution.setVariable("aLaCarte", false);
 
 679         execution.setVariable("apiVersion", "7");
 
 680         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 683         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 684         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 685                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
 686                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
 687                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 688         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 690         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 691         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 692         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 693                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 694         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 695                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 696         vnf.setVnfId("vnfId123");
 
 698         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 699         vnf.getVfModules().add(vfModule);
 
 700         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 701         vnf.getVfModules().add(vfModule2);
 
 703         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 704                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 705         volumeGroup.setVolumeGroupId("vg123");
 
 706         vnf.getVolumeGroups().add(volumeGroup);
 
 708         serviceInstanceMSO.getVnfs().add(vnf);
 
 710         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 711         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 712         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 713                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 714         workflowAction.selectExecutionList(execution);
 
 715         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 716         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 717                 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
 
 718                 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 719                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 723     public void selectExecutionListServiceMacroUnassignTest() throws Exception {
 
 724         String gAction = "unassignInstance";
 
 725         String resource = "Service";
 
 726         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 727         execution.setVariable("requestAction", gAction);
 
 728         String bpmnRequest = new String(Files
 
 729                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 730         execution.setVariable("bpmnRequest", bpmnRequest);
 
 731         execution.setVariable("aLaCarte", false);
 
 732         execution.setVariable("apiVersion", "7");
 
 733         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 736         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 737         List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 738                 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 739         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 741         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 742         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 743         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 744                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 745         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 746                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 747         vnf.setVnfId("vnfId123");
 
 749         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 750         vnf.getVfModules().add(vfModule);
 
 751         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 752         vnf.getVfModules().add(vfModule2);
 
 754         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 755                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 756         volumeGroup.setVolumeGroupId("vg123");
 
 757         vnf.getVolumeGroups().add(volumeGroup);
 
 759         serviceInstanceMSO.getVnfs().add(vnf);
 
 761         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 762         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 763         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 764                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 765         workflowAction.selectExecutionList(execution);
 
 766         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 767         assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 768                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 772     public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
 
 773         String gAction = "deleteInstance";
 
 774         String resource = "Service";
 
 775         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 776         execution.setVariable("requestAction", gAction);
 
 777         String bpmnRequest = new String(Files
 
 778                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 779         execution.setVariable("bpmnRequest", bpmnRequest);
 
 780         execution.setVariable("aLaCarte", false);
 
 781         execution.setVariable("apiVersion", "7");
 
 782         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 785         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 786         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 787                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
 788                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
 789                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 790         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 792         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 793         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 794         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 795                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 797         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
 
 798                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 799         network.setNetworkId("123");
 
 800         serviceInstanceMSO.getNetworks().add(network);
 
 801         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
 
 802                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 803         network2.setNetworkId("321");
 
 804         serviceInstanceMSO.getNetworks().add(network2);
 
 806         Collection collection = new Collection();
 
 807         serviceInstanceMSO.setCollection(collection);
 
 809         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 810         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 811         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 812                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 813         workflowAction.selectExecutionList(execution);
 
 814         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 815         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
 816                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
 
 817                 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
 821     public void selectExecutionListVnfMacroRecreateTest() throws Exception {
 
 822         String gAction = "recreateInstance";
 
 823         String resource = "Vnf";
 
 824         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 825         execution.setVariable("requestAction", gAction);
 
 827                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
 
 828         execution.setVariable("bpmnRequest", bpmnRequest);
 
 829         execution.setVariable("aLaCarte", false);
 
 830         execution.setVariable("apiVersion", "7");
 
 831         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
 
 832         execution.setVariable("serviceInstanceId", "123");
 
 833         execution.setVariable("vnfId", "1234");
 
 835         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 836         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 837                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 838                 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
 839                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 840                 "AAIUnsetVnfInMaintBB");
 
 841         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 843         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 844         serviceInstanceAAI.setServiceInstanceId("123");
 
 845         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 846                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 847         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 848                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 849         vnf.setVnfId("1234");
 
 851         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 852                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 853         vfModule.setVfModuleId("vfModule1");
 
 854         vnf.getVfModules().add(vfModule);
 
 855         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 856                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 857         vfModule2.setVfModuleId("vfModule2");
 
 858         vnf.getVfModules().add(vfModule2);
 
 860         serviceInstanceMSO.getVnfs().add(vnf);
 
 862         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 863         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 864         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 865                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 866         workflowAction.selectExecutionList(execution);
 
 867         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 868         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
 
 869                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
 
 870                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 871                 "AAIUnsetVnfInMaintBB");
 
 875     public void selectExecutionListVnfMacroReplaceTest() throws Exception {
 
 876         String gAction = "replaceInstance";
 
 877         String resource = "Vnf";
 
 878         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 879         execution.setVariable("requestAction", gAction);
 
 881                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
 
 882         execution.setVariable("bpmnRequest", bpmnRequest);
 
 883         execution.setVariable("aLaCarte", false);
 
 884         execution.setVariable("apiVersion", "7");
 
 885         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
 
 886         execution.setVariable("serviceInstanceId", "123");
 
 887         execution.setVariable("vnfId", "1234");
 
 889         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 890         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 891                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 892                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
 893                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
 
 894                 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
 
 895                 "AAIUnsetVnfInMaintBB");
 
 896         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 898         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 899         serviceInstanceAAI.setServiceInstanceId("123");
 
 900         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 901                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 902         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 903                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 904         vnf.setVnfId("1234");
 
 905         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 906                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 907         vfModule.setVfModuleId("vfModule1");
 
 908         vnf.getVfModules().add(vfModule);
 
 909         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 910                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 911         vfModule2.setVfModuleId("vfModule2");
 
 912         vnf.getVfModules().add(vfModule2);
 
 913         serviceInstanceMSO.getVnfs().add(vnf);
 
 914         VfModule vfModuleAAI = new VfModule();
 
 915         vfModuleAAI.setVfModuleId("vfModule2");
 
 916         RelationshipList relationshipList = new RelationshipList();
 
 917         Relationship relationship = new Relationship();
 
 918         relationshipList.getRelationship().add(relationship);
 
 919         vfModuleAAI.setRelationshipList(relationshipList);
 
 920         Relationships relationships = new Relationships("abc");
 
 921         Configuration config = new Configuration();
 
 922         config.setConfigurationId("configId");
 
 923         Optional<Configuration> configOp = Optional.of(config);
 
 924         Optional<Relationships> relationshipsOp = Optional.of(relationships);
 
 926         doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
 
 927         doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
 
 928         doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
 
 929         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 930         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 931         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 932                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 933         workflowAction.selectExecutionList(execution);
 
 934         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 935         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
 
 936                 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 937                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
 
 938                 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
 
 939                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
 
 940                 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
 941         for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
 
 942             assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
 
 948     public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
 
 949         String gAction = "createInstance";
 
 950         String resource = "NetworkCollection";
 
 951         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 952         execution.setVariable("requestAction", gAction);
 
 953         String bpmnRequest = new String(
 
 954                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
 
 955         execution.setVariable("bpmnRequest", bpmnRequest);
 
 956         execution.setVariable("aLaCarte", false);
 
 957         execution.setVariable("apiVersion", "7");
 
 958         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 961         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 962         List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
 
 963                 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
 
 964         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 966         Service service = new Service();
 
 967         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
 968         CollectionResource collectionResource = new CollectionResource();
 
 969         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
 970         collectionResourceCustomization.setCollectionResource(collectionResource);
 
 971         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 973         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 974                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 975         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 976         workflowAction.selectExecutionList(execution);
 
 977         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 978         assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
 
 979                 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 980                 "ActivateNetworkCollectionBB");
 
 985     public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
 
 986         String gAction = "deleteInstance";
 
 987         String resource = "NetworkCollection";
 
 988         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 989         execution.setVariable("requestAction", gAction);
 
 990         String bpmnRequest = new String(
 
 991                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
 
 992         execution.setVariable("bpmnRequest", bpmnRequest);
 
 993         execution.setVariable("aLaCarte", false);
 
 994         execution.setVariable("apiVersion", "7");
 
 995         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 997         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 998         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
 
 999                 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
 
1000         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1002         Service service = new Service();
 
1003         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
1004         CollectionResource collectionResource = new CollectionResource();
 
1005         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
1006         collectionResourceCustomization.setCollectionResource(collectionResource);
 
1007         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
1009         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1010                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1011         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1012         workflowAction.selectExecutionList(execution);
 
1013         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1014         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1015                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
 
1016                 "DeleteNetworkCollectionBB");
 
1020     public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
 
1021         String gAction = "createInstance";
 
1022         String resource = "VfModule";
 
1023         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1024         execution.setVariable("requestAction", gAction);
 
1025         String bpmnRequest =
 
1026                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1027         execution.setVariable("bpmnRequest", bpmnRequest);
 
1028         execution.setVariable("aLaCarte", true);
 
1029         execution.setVariable("apiVersion", "7");
 
1030         execution.setVariable("requestUri",
 
1031                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1034         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1035         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1036                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1037         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1039         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1040                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1041         workflowAction.selectExecutionList(execution);
 
1042         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1043         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1047     public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
 
1048         String gAction = "createInstance";
 
1049         String resource = "VfModule";
 
1050         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1051         execution.setVariable("requestAction", gAction);
 
1052         String bpmnRequest =
 
1053                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1054         execution.setVariable("bpmnRequest", bpmnRequest);
 
1055         execution.setVariable("aLaCarte", true);
 
1056         execution.setVariable("apiVersion", "7");
 
1057         execution.setVariable("requestUri",
 
1058                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1060         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1061         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1062                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1063         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1065         List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
 
1066         CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
 
1067         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
 
1068                 new CvnfcConfigurationCustomization();
 
1069         ConfigurationResource configurationResource = new ConfigurationResource();
 
1070         configurationResource.setToscaNodeType("FabricConfiguration");
 
1071         vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
 
1072         vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
 
1073         vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
 
1074         List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
 
1075         custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
 
1076         cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
 
1077         cvnfcCustomization.setDescription("description");
 
1078         cvnfcCustomizations.add(cvnfcCustomization);
 
1080         CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
 
1081         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
 
1082                 new CvnfcConfigurationCustomization();
 
1083         ConfigurationResource configurationResource2 = new ConfigurationResource();
 
1084         configurationResource2.setToscaNodeType("FabricConfiguration");
 
1085         vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
 
1086         vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
 
1087         vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
 
1088         List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
 
1089         custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
 
1090         cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
 
1091         cvnfcCustomization2.setDescription("description2");
 
1092         cvnfcCustomizations.add(cvnfcCustomization2);
 
1094         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1095                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1096         // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
 
1097         // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
 
1098         workflowAction.selectExecutionList(execution);
 
1099         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1100         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1101                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
 
1102                 "ActivateFabricConfigurationBB");
 
1106     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
 
1107         String gAction = "replaceInstance";
 
1108         String resource = "VfModule";
 
1109         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1110         execution.setVariable("requestAction", gAction);
 
1111         String bpmnRequest =
 
1112                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1113         execution.setVariable("bpmnRequest", bpmnRequest);
 
1114         execution.setVariable("aLaCarte", true);
 
1115         execution.setVariable("apiVersion", "7");
 
1116         execution.setVariable("requestUri",
 
1117                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1119         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1120         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1121         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1122                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1123         workflowAction.selectExecutionList(execution);
 
1124         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1126         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1127                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1128                 "ChangeModelServiceInstanceBB");
 
1132     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1133         String gAction = "replaceInstanceRetainAssignments";
 
1134         String resource = "VfModule";
 
1135         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1136         execution.setVariable("requestAction", gAction);
 
1137         String bpmnRequest =
 
1138                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1139         execution.setVariable("bpmnRequest", bpmnRequest);
 
1140         execution.setVariable("aLaCarte", true);
 
1141         execution.setVariable("apiVersion", "7");
 
1142         execution.setVariable("requestUri",
 
1143                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1145         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1146         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1147         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1148                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1149         workflowAction.selectExecutionList(execution);
 
1150         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1152         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1153                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1157     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
 
1158         String gAction = "replaceInstance";
 
1159         String resource = "VfModule";
 
1160         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1161         execution.setVariable("requestAction", gAction);
 
1162         String bpmnRequest =
 
1163                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1164         execution.setVariable("bpmnRequest", bpmnRequest);
 
1165         execution.setVariable("aLaCarte", true);
 
1166         execution.setVariable("apiVersion", "7");
 
1167         execution.setVariable("requestUri",
 
1168                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1169         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1170         execution.setVariable("vfModuleId", "1234");
 
1172         VolumeGroup volumeGroup = new VolumeGroup();
 
1173         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1174         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1175                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1176         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1177         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1178         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1179                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1180         workflowAction.selectExecutionList(execution);
 
1181         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1183         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1184                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
 
1185                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1189     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
 
1191         String gAction = "replaceInstanceRetainAssignments";
 
1192         String resource = "VfModule";
 
1193         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1194         execution.setVariable("requestAction", gAction);
 
1195         String bpmnRequest =
 
1196                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1197         execution.setVariable("bpmnRequest", bpmnRequest);
 
1198         execution.setVariable("aLaCarte", true);
 
1199         execution.setVariable("apiVersion", "7");
 
1200         execution.setVariable("requestUri",
 
1201                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1202         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1203         execution.setVariable("vfModuleId", "1234");
 
1205         VolumeGroup volumeGroup = new VolumeGroup();
 
1206         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1207         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1208                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1210         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1211         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1212         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1213                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1214         workflowAction.selectExecutionList(execution);
 
1215         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1217         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1218                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
1219                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1223     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
 
1224         String gAction = "replaceInstance";
 
1225         String resource = "VfModule";
 
1226         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1227         execution.setVariable("requestAction", gAction);
 
1228         String bpmnRequest =
 
1229                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1230         execution.setVariable("bpmnRequest", bpmnRequest);
 
1231         execution.setVariable("aLaCarte", true);
 
1232         execution.setVariable("apiVersion", "7");
 
1233         execution.setVariable("requestUri",
 
1234                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1235         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1236         execution.setVariable("vfModuleId", "1234");
 
1238         VolumeGroup volumeGroup = new VolumeGroup();
 
1239         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1240         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1241                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1243         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1244         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1245         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1246         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1247         vfModuleCustomization.setVfModule(vfModule);
 
1248         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1249                 .thenReturn(vfModuleCustomization);
 
1251         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1252         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1253         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1254                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1255         workflowAction.selectExecutionList(execution);
 
1256         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1258         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1259                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1260                 "ChangeModelServiceInstanceBB");
 
1264     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1265         String gAction = "replaceInstanceRetainAssignments";
 
1266         String resource = "VfModule";
 
1267         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1268         execution.setVariable("requestAction", gAction);
 
1269         String bpmnRequest =
 
1270                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1271         execution.setVariable("bpmnRequest", bpmnRequest);
 
1272         execution.setVariable("aLaCarte", true);
 
1273         execution.setVariable("apiVersion", "7");
 
1274         execution.setVariable("requestUri",
 
1275                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1276         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1277         execution.setVariable("vfModuleId", "1234");
 
1279         VolumeGroup volumeGroup = new VolumeGroup();
 
1280         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1281         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1282                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1284         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1285         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1286         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1287         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1288         vfModuleCustomization.setVfModule(vfModule);
 
1289         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1290                 .thenReturn(vfModuleCustomization);
 
1292         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1293         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1294         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1295                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1296         workflowAction.selectExecutionList(execution);
 
1297         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1299         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1300                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1304     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
 
1305         String gAction = "replaceInstance";
 
1306         String resource = "VfModule";
 
1307         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1308         execution.setVariable("requestAction", gAction);
 
1309         String bpmnRequest =
 
1310                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1311         execution.setVariable("bpmnRequest", bpmnRequest);
 
1312         execution.setVariable("aLaCarte", true);
 
1313         execution.setVariable("apiVersion", "7");
 
1314         execution.setVariable("requestUri",
 
1315                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1316         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1317         execution.setVariable("vfModuleId", "1234");
 
1319         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1320         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1321         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1322         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1323         vfModuleCustomization.setVfModule(vfModule);
 
1324         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1325                 .thenReturn(vfModuleCustomization);
 
1327         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1328         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1329         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1330                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1331         workflowAction.selectExecutionList(execution);
 
1332         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1334         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1335                 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1336                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1340     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
 
1342         String gAction = "replaceInstanceRetainAssignments";
 
1343         String resource = "VfModule";
 
1344         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1345         execution.setVariable("requestAction", gAction);
 
1346         String bpmnRequest =
 
1347                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1348         execution.setVariable("bpmnRequest", bpmnRequest);
 
1349         execution.setVariable("aLaCarte", true);
 
1350         execution.setVariable("apiVersion", "7");
 
1351         execution.setVariable("requestUri",
 
1352                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1353         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1354         execution.setVariable("vfModuleId", "1234");
 
1356         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1357         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1358         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1359         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1360         vfModuleCustomization.setVfModule(vfModule);
 
1361         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1362                 .thenReturn(vfModuleCustomization);
 
1364         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1365         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1366         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1367                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1368         workflowAction.selectExecutionList(execution);
 
1369         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1371         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
 
1372                 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
1373                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1377     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
 
1378         String gAction = "replaceInstance";
 
1379         String resource = "VfModule";
 
1380         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1381         execution.setVariable("requestAction", gAction);
 
1382         String bpmnRequest = new String(
 
1383                 Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleReplaceRebuildVolumeGroups.json")));
 
1384         execution.setVariable("bpmnRequest", bpmnRequest);
 
1385         execution.setVariable("aLaCarte", true);
 
1386         execution.setVariable("apiVersion", "7");
 
1387         execution.setVariable("requestUri",
 
1388                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1389         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1390         execution.setVariable("vfModuleId", "1234");
 
1392         VolumeGroup volumeGroup = new VolumeGroup();
 
1393         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1394         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1395                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1397         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1398         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1399         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1400         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1401         vfModuleCustomization.setVfModule(vfModule);
 
1402         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1403                 .thenReturn(vfModuleCustomization);
 
1405         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1406         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1407         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1408                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1409         workflowAction.selectExecutionList(execution);
 
1410         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1412         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1413                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
1414                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
1415                 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1419     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1420         String gAction = "replaceInstanceRetainAssignments";
 
1421         String resource = "VfModule";
 
1422         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1423         execution.setVariable("requestAction", gAction);
 
1424         String bpmnRequest = new String(
 
1425                 Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleReplaceRebuildVolumeGroups.json")));
 
1426         execution.setVariable("bpmnRequest", bpmnRequest);
 
1427         execution.setVariable("aLaCarte", true);
 
1428         execution.setVariable("apiVersion", "7");
 
1429         execution.setVariable("requestUri",
 
1430                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1431         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1432         execution.setVariable("vfModuleId", "1234");
 
1434         VolumeGroup volumeGroup = new VolumeGroup();
 
1435         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1436         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1437                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1439         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1440         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1441         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1442         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1443         vfModuleCustomization.setVfModule(vfModule);
 
1444         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1445                 .thenReturn(vfModuleCustomization);
 
1447         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1448         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1449         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1450                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1451         workflowAction.selectExecutionList(execution);
 
1452         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1454         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1455                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
 
1456                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1457                 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1462     public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
 
1463         String gAction = "deleteInstance";
 
1464         String resource = "VfModule";
 
1465         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1466         execution.setVariable("requestAction", gAction);
 
1467         String bpmnRequest =
 
1468                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1469         execution.setVariable("bpmnRequest", bpmnRequest);
 
1470         execution.setVariable("aLaCarte", true);
 
1471         execution.setVariable("apiVersion", "7");
 
1472         execution.setVariable("requestUri",
 
1473                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1475         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1476         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1477                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1478         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1480         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1481                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1483         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1484         vnf.setVnfId("vnf0");
 
1485         vnf.setModelCustomizationId("modelCustomizationId");
 
1486         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1488         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1489         vfModule.setModelCustomizationId("modelCustomizationId");
 
1490         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1492         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1493         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1494         vnfc.setModelInvariantId("modelInvariantId");
 
1495         vnfc.setVnfcName("testVnfcName");
 
1497         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1500         List<org.onap.aai.domain.yang.Configuration> configurations =
 
1501                 new ArrayList<org.onap.aai.domain.yang.Configuration>();
 
1502         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1503         configuration.setConfigurationId("configurationId");
 
1504         configuration.setModelCustomizationId("modelCustimizationId");
 
1505         configuration.setConfigurationName("testConfigurationName");
 
1506         configurations.add(configuration);
 
1507         doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1510         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
 
1512         SPY_workflowAction.selectExecutionList(execution);
 
1513         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1514         assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
 
1515                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1519     public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
 
1520         String gAction = "deleteInstance";
 
1521         ObjectMapper mapper = new ObjectMapper();
 
1522         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1523         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1524         execution.setVariable("requestAction", gAction);
 
1525         String bpmnRequest =
 
1526                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1527         execution.setVariable("bpmnRequest", bpmnRequest);
 
1528         execution.setVariable("vnfId", "1234");
 
1529         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1530         execution.setVariable("requestUri",
 
1531                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1532         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1533         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1534         String requestAction = "deleteInstance";
 
1535         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1536         boolean aLaCarte = true;
 
1537         String apiVersion = "7";
 
1538         String vnfType = "vnfType";
 
1539         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1540         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1541         Resource resourceKey = new Resource(resourceType, key, aLaCarte);
 
1542         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1544         thrown.expect(AAIEntityNotFoundException.class);
 
1545         thrown.expectMessage(containsString(
 
1546                 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
 
1548         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1549                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1551         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1552                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1553                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1554                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1556         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1557         vnf.setVnfId("vnf0");
 
1558         vnf.setModelCustomizationId("modelCustomizationId");
 
1559         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1561         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1562         vfModule.setModelCustomizationId("modelCustomizationId");
 
1563         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
 
1565         SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1569     public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
 
1570         String gAction = "deleteInstance";
 
1571         String resource = "VfModule";
 
1572         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1573         execution.setVariable("requestAction", gAction);
 
1574         String bpmnRequest =
 
1575                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1576         execution.setVariable("bpmnRequest", bpmnRequest);
 
1577         execution.setVariable("aLaCarte", true);
 
1578         execution.setVariable("apiVersion", "7");
 
1579         execution.setVariable("requestUri",
 
1580                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1582         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1583         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1584                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1585         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1587         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1588                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1590         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1591         vnf.setVnfId("vnf0");
 
1592         vnf.setModelCustomizationId("modelCustomizationId");
 
1593         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1595         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1596         vfModule.setModelCustomizationId("modelCustomizationId");
 
1597         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1599         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1600         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1601         vnfc.setModelInvariantId("modelInvariantId");
 
1602         vnfc.setVnfcName("testVnfcName");
 
1604         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1607         List<org.onap.aai.domain.yang.Configuration> configurations =
 
1608                 new ArrayList<org.onap.aai.domain.yang.Configuration>();
 
1609         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1610         doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1613         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
 
1615         SPY_workflowAction.selectExecutionList(execution);
 
1616         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1617         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1621     public void selectExecutionListMacroResumeTest() throws Exception {
 
1622         String gAction = "createInstance";
 
1623         String resource = "Service";
 
1624         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1625         execution.setVariable("requestAction", gAction);
 
1626         String bpmnRequest =
 
1627                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
1628         execution.setVariable("bpmnRequest", bpmnRequest);
 
1629         execution.setVariable("aLaCarte", false);
 
1630         execution.setVariable("apiVersion", "7");
 
1631         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
1633         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1634         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1635         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1637         Service service = new Service();
 
1638         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
1640         ServiceInstance si = new ServiceInstance();
 
1642         when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
 
1643         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1645         String flowsToExecuteString =
 
1646                 "[{\"buildingBlock\":{\"mso-id\":\"2f9ddc4b-4dcf-4129-a35f-be1625ae0176\",\"bpmn-flow-name\":\"AssignServiceInstanceBB\",\"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\"}}]";
 
1647         ObjectMapper om = new ObjectMapper();
 
1648         List<ExecuteBuildingBlock> flowsToExecute = null;
 
1650             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
1651             flowsToExecute = Arrays.asList(asArray);
 
1652         } catch (Exception e) {
 
1653             e.printStackTrace();
 
1656         when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
 
1658         workflowAction.selectExecutionList(execution);
 
1659         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1660         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
 
1664     public void getRelatedResourcesInVfModuleTest() throws Exception {
 
1665         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1666         vnfc.setModelInvariantId("modelInvariantId");
 
1667         vnfc.setVnfcName("testVnfcName");
 
1669         String vfncPayload =
 
1670                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
 
1671         AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
 
1673         String configurationPayload =
 
1674                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
 
1675         AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
 
1676         List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
 
1677         configurationResultWrappers.add(configurationWrapper);
 
1679         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
 
1680         when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
 
1682         doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
 
1684         List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
 
1685                 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
 
1686         assertEquals(1, configurationsList.size());
 
1687         assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
 
1691      * WorkflowActionBB Tests
 
1695     public void pluralTest() {
 
1696         List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
 
1697                 "networks, Network", "invalidNames, invalidNames");
 
1698         items.forEach(item -> {
 
1699             String[] split = item.split(",");
 
1700             String type = split[0].trim();
 
1701             String expected = split[1].trim();
 
1702             assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
 
1707     public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
 
1708         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1709         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
 
1710         BuildingBlock bb = new BuildingBlock();
 
1711         bb.setBpmnFlowName("AssignNetworkBB");
 
1713         ebb.setBuildingBlock(bb);
 
1714         executeFlows.add(ebb);
 
1715         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
 
1716         BuildingBlock bb2 = new BuildingBlock();
 
1717         bb2.setBpmnFlowName("AssignNetworkBB");
 
1719         ebb2.setBuildingBlock(bb2);
 
1720         executeFlows.add(ebb2);
 
1721         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
 
1722         BuildingBlock bb3 = new BuildingBlock();
 
1723         bb3.setBpmnFlowName("CreateNetworkBB");
 
1725         ebb3.setBuildingBlock(bb3);
 
1726         executeFlows.add(ebb3);
 
1727         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
 
1728         BuildingBlock bb4 = new BuildingBlock();
 
1729         bb4.setBpmnFlowName("CreateNetworkBB");
 
1731         ebb4.setBuildingBlock(bb4);
 
1732         executeFlows.add(ebb4);
 
1733         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
 
1734         BuildingBlock bb5 = new BuildingBlock();
 
1735         bb5.setBpmnFlowName("ActivateNetworkBB");
 
1737         ebb5.setBuildingBlock(bb5);
 
1738         executeFlows.add(ebb5);
 
1739         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
 
1740         BuildingBlock bb6 = new BuildingBlock();
 
1741         bb6.setBpmnFlowName("ActivateNetworkBB");
 
1743         ebb6.setBuildingBlock(bb6);
 
1744         executeFlows.add(ebb6);
 
1746         List<ExecuteBuildingBlock> sorted =
 
1747                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
 
1748         assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
 
1749                 "CreateNetworkBB", "ActivateNetworkBB");
 
1753     public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
 
1754         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1755         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
 
1756         BuildingBlock bb = new BuildingBlock();
 
1757         bb.setBpmnFlowName("DeactivateNetworkBB");
 
1759         ebb.setBuildingBlock(bb);
 
1760         executeFlows.add(ebb);
 
1761         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
 
1762         BuildingBlock bb2 = new BuildingBlock();
 
1763         bb2.setBpmnFlowName("DeactivateNetworkBB");
 
1765         ebb2.setBuildingBlock(bb2);
 
1766         executeFlows.add(ebb2);
 
1767         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
 
1768         BuildingBlock bb3 = new BuildingBlock();
 
1769         bb3.setBpmnFlowName("DeleteNetworkBB");
 
1771         ebb3.setBuildingBlock(bb3);
 
1772         executeFlows.add(ebb3);
 
1773         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
 
1774         BuildingBlock bb4 = new BuildingBlock();
 
1775         bb4.setBpmnFlowName("DeleteNetworkBB");
 
1777         ebb4.setBuildingBlock(bb4);
 
1778         executeFlows.add(ebb4);
 
1779         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
 
1780         BuildingBlock bb5 = new BuildingBlock();
 
1781         bb5.setBpmnFlowName("UnassignNetworkBB");
 
1783         ebb5.setBuildingBlock(bb5);
 
1784         executeFlows.add(ebb5);
 
1785         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
 
1786         BuildingBlock bb6 = new BuildingBlock();
 
1787         bb6.setBpmnFlowName("UnassignNetworkBB");
 
1789         ebb6.setBuildingBlock(bb6);
 
1790         executeFlows.add(ebb6);
 
1792         List<ExecuteBuildingBlock> sorted =
 
1793                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
 
1794         assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1795                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
 
1799     public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
 
1800         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1801         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
1802                 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
1803         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1804         List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1805                 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
 
1807         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
 
1808                 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1809         when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
 
1810         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
 
1811                 WorkflowType.VNF, false, "my-custom-cloud-owner");
 
1812         assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
 
1813         assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
 
1814         assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
 
1815         assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
 
1816         assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
 
1817         assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
 
1818         assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
 
1819         assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
 
1820         assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
 
1821         assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
 
1825     public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
 
1826         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1827         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1828         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1829         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
 
1830                 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
 
1832         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
 
1833                 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
 
1834         assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
 
1838     public void extractResourceIdAndTypeFromUriTest() {
 
1839         String uri = "/v6/serviceInstances/123";
 
1840         String uri2 = "/v6/serviceInstances/123/vnfs/1234";
 
1841         String uri3 = "/v6/serviceInstances";
 
1842         String uri4 = "/v6/serviceInstances/assign";
 
1843         String uri5 = "'/v6/serviceInstances/123/vnfs";
 
1844         String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
 
1845         String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
 
1846         String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
 
1847         Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
 
1848         Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
 
1849         Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
 
1850         Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
 
1851         Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
 
1852         assertEquals(expected1.getResourceId(), result.getResourceId());
 
1853         assertEquals(expected1.getResourceType(), result.getResourceType());
 
1854         result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
 
1855         assertEquals(expected2.getResourceId(), result.getResourceId());
 
1856         assertEquals(expected2.getResourceType(), result.getResourceType());
 
1857         result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
 
1858         assertEquals("Service", result.getResourceType().toString());
 
1859         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1860         result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
 
1861         assertEquals("Service", result.getResourceType().toString());
 
1862         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1863         result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
 
1864         assertEquals("Vnf", result.getResourceType().toString());
 
1865         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1866         result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
 
1867         assertEquals(expected3.getResourceId(), result.getResourceId());
 
1868         assertEquals(expected3.getResourceType(), result.getResourceType());
 
1869         result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
 
1870         assertEquals(expected4.getResourceId(), result.getResourceId());
 
1871         assertEquals(expected4.getResourceType(), result.getResourceType());
 
1872         result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
 
1873         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1874         assertEquals("VfModule", result.getResourceType().toString());
 
1879     public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
 
1880         this.expectedException.expect(IllegalArgumentException.class);
 
1881         this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
 
1882         workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
 
1886     public void extractResourceIdAndTypeFromUriInvalidUriTest() {
 
1887         this.expectedException.expect(IllegalArgumentException.class);
 
1888         this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
 
1889         workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
 
1893     public void extractResourceIdAndTypeFromUriResumeTest() {
 
1894         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1895                 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
 
1896         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1900     public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
 
1901         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1902                 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/deactivateAndCloudDelete/resume");
 
1903         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1907     public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
 
1908         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1909                 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/replace/resume");
 
1910         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1914     public void extractResourceIdAndTypeFromUriResumeIdOnly() {
 
1915         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1916                 "http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume");
 
1917         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1921     public void isUriResumeTest() {
 
1922         assertTrue(workflowAction.isUriResume(
 
1923                 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
 
1924         assertTrue(workflowAction.isUriResume(
 
1925                 "        http://localhost:9100/onap/so/infra/serviceInstantiation/v7/serviceInstances/4ff87c63-461b-4d83-8121-d351e6db216c/vnfs/eea9b93b-b5b9-4fad-9c35-12d52e4b683f/vfModules/33cb74cd-9cb3-4090-a3c0-1b8c8e235847/resume"));
 
1927         assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
 
1931     public void isRequestMacroServiceResumeTest() {
 
1932         ServiceInstance si = new ServiceInstance();
 
1933         when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
 
1934         assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
 
1935         assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
 
1939     public void populateResourceIdsFromApiHandlerTest() {
 
1940         execution.setVariable("serviceInstanceId", "123");
 
1941         execution.setVariable("vnfId", "888");
 
1942         WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
 
1943         assertEquals("123", x.getServiceInstanceId());
 
1944         assertEquals("888", x.getVnfId());
 
1945         assertNull(x.getVolumeGroupId());
 
1948     private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
 
1949             String modelCustomizationId) {
 
1950         RequestDetails reqDetails = new RequestDetails();
 
1951         SubscriberInfo subInfo = new SubscriberInfo();
 
1952         subInfo.setGlobalSubscriberId(globalSubscriberId);
 
1953         reqDetails.setSubscriberInfo(subInfo);
 
1954         RequestParameters reqParams = new RequestParameters();
 
1955         reqParams.setSubscriptionServiceType(subscriptionServiceType);
 
1956         reqDetails.setRequestParameters(reqParams);
 
1957         ModelInfo modelInfo = new ModelInfo();
 
1958         modelInfo.setModelCustomizationId(modelCustomizationId);
 
1959         reqDetails.setModelInfo(modelInfo);
 
1964     public void validateResourceIdInAAIVnfTest() throws Exception {
 
1965         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1966         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1967         workflowResourceIds.setServiceInstanceId("siId123");
 
1969         GenericVnf vnf = new GenericVnf();
 
1970         vnf.setVnfId("id123");
 
1971         vnf.setVnfName("vnfName123");
 
1972         vnf.setModelCustomizationId("1234567");
 
1973         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
1974         GenericVnf vnf2 = new GenericVnf();
 
1975         vnf2.setVnfId("id123");
 
1976         vnf2.setVnfName("vnfName222");
 
1977         vnf2.setModelCustomizationId("222");
 
1978         Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
 
1979         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
1980         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
 
1981         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
1982         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
 
1983                 workflowResourceIds);
 
1984         assertEquals("id123", id);
 
1985         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
 
1986                 workflowResourceIds);
 
1987         assertEquals("generatedId123", id2);
 
1989         this.expectedException.expect(DuplicateNameException.class);
 
1990         this.expectedException.expectMessage(containsString(
 
1991                 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
 
1992         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
 
1993                 workflowResourceIds);
 
1997     public void validateResourceIdInAAIVnfNotGloballyUniqueTest() throws Exception {
 
1998         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1999         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2000         workflowResourceIds.setServiceInstanceId("siId123");
 
2003         GenericVnfs genericVnfs = new GenericVnfs();
 
2004         GenericVnf vnf3 = new GenericVnf();
 
2005         vnf3.setVnfId("id123");
 
2006         vnf3.setVnfName("vnfName333");
 
2007         genericVnfs.getGenericVnf().add(vnf3);
 
2008         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
 
2009         when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
 
2011         this.expectedException.expect(DuplicateNameException.class);
 
2012         this.expectedException.expectMessage(containsString(
 
2013                 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
 
2014         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
 
2015                 workflowResourceIds);
 
2019     public void validateResourceIdInAAINetworkTest() throws Exception {
 
2020         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2021         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2022         workflowResourceIds.setServiceInstanceId("siId123");
 
2025         L3Network network = new L3Network();
 
2026         network.setNetworkId("id123");
 
2027         network.setNetworkName("name123");
 
2028         network.setModelCustomizationId("1234567");
 
2029         workflowResourceIds.setServiceInstanceId("siId123");
 
2030         Optional<L3Network> opNetwork = Optional.of(network);
 
2031         L3Network network2 = new L3Network();
 
2032         network2.setNetworkId("id123");
 
2033         network2.setNetworkName("networkName222");
 
2034         network2.setModelCustomizationId("222");
 
2035         Optional<L3Network> opNetwork2 = Optional.of(network2);
 
2036         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2037         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
 
2038                 .thenReturn(opNetwork2);
 
2039         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
2040         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
 
2041                 reqDetails, workflowResourceIds);
 
2042         assertEquals("id123", id);
 
2043         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
 
2044                 reqDetails, workflowResourceIds);
 
2045         assertEquals("generatedId123", id2);
 
2047         this.expectedException.expect(DuplicateNameException.class);
 
2048         this.expectedException.expectMessage(containsString(
 
2049                 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
 
2050         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
 
2051                 workflowResourceIds);
 
2055     public void validateNetworkResourceNameExistsInAAITest() throws Exception {
 
2056         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2057         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2058         workflowResourceIds.setServiceInstanceId("siId123");
 
2061         L3Network network = new L3Network();
 
2062         network.setNetworkId("id123");
 
2063         network.setNetworkName("name123");
 
2064         network.setModelCustomizationId("1234567");
 
2065         workflowResourceIds.setServiceInstanceId("siId123");
 
2067         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
 
2068                 .thenReturn(Optional.empty());
 
2069         when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
 
2071         this.expectedException.expect(DuplicateNameException.class);
 
2072         this.expectedException.expectMessage(containsString(
 
2073                 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
 
2074         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
 
2075                 workflowResourceIds);
 
2079     public void validateResourceIdInAAIVfModuleTest() throws Exception {
 
2080         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2081         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2082         workflowResourceIds.setServiceInstanceId("siId123");
 
2084         GenericVnf vnf = new GenericVnf();
 
2085         vnf.setVnfId("id123");
 
2086         vnf.setVnfName("vnfName123");
 
2087         vnf.setModelCustomizationId("222");
 
2090         VfModules vfModules = new VfModules();
 
2091         VfModule vfModule = new VfModule();
 
2092         vfModule.setVfModuleId("id123");
 
2093         vfModule.setVfModuleName("name123");
 
2094         vfModule.setModelCustomizationId("1234567");
 
2095         vfModules.getVfModule().add(vfModule);
 
2096         vnf.setVfModules(vfModules);
 
2097         workflowResourceIds.setVnfId("id123");
 
2098         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2099         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
 
2100                 reqDetails, workflowResourceIds);
 
2101         assertEquals("id123", id);
 
2103         GenericVnf vnf1 = new GenericVnf();
 
2104         VfModules vfModules2 = new VfModules();
 
2105         VfModule vfModule2 = new VfModule();
 
2106         vfModule2.setVfModuleId("id123");
 
2107         vfModule2.setVfModuleName("vFModName222");
 
2108         vfModule2.setModelCustomizationId("222");
 
2109         vfModules2.getVfModule().add(vfModule2);
 
2110         vnf1.setVfModules(vfModules2);
 
2111         workflowResourceIds.setVnfId("id111");
 
2112         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
2113         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
 
2114                 reqDetails, workflowResourceIds);
 
2115         assertEquals("generatedId123", id2);
 
2117         this.expectedException.expect(DuplicateNameException.class);
 
2118         this.expectedException.expectMessage(containsString(
 
2119                 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
 
2120         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
 
2121                 workflowResourceIds);
 
2125     public void validateResourceIdInAAIVfModuleNotGloballyUniqueTest() throws Exception {
 
2126         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2127         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2128         workflowResourceIds.setVnfId("id111");
 
2130         GenericVnf vnf1 = new GenericVnf();
 
2131         workflowResourceIds.setVnfId("id111");
 
2132         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
2134         when(bbSetupUtils.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
 
2135         this.expectedException.expect(DuplicateNameException.class);
 
2136         this.expectedException.expectMessage(
 
2137                 containsString("vfModule with name vFModName333 already exists. The name must be unique."));
 
2138         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
 
2139                 workflowResourceIds);
 
2143     public void validateResourceIdInAAIVolumeGroupTest() throws Exception {
 
2144         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2145         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2146         workflowResourceIds.setServiceInstanceId("siId123");
 
2148         GenericVnf vnf = new GenericVnf();
 
2149         vnf.setVnfId("id123");
 
2150         vnf.setVnfName("vnfName123");
 
2151         vnf.setModelCustomizationId("1234567");
 
2153         GenericVnf vnf2 = new GenericVnf();
 
2154         vnf2.setVnfId("id123");
 
2155         vnf2.setVnfName("vnfName123");
 
2156         vnf2.setModelCustomizationId("222");
 
2159         VolumeGroup volumeGroup = new VolumeGroup();
 
2160         volumeGroup.setVolumeGroupId("id123");
 
2161         volumeGroup.setVolumeGroupName("name123");
 
2162         volumeGroup.setVfModuleModelCustomizationId("1234567");
 
2163         workflowResourceIds.setVnfId("id123");
 
2164         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2166         workflowResourceIds.setVnfId("id123");
 
2168         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2169         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
 
2170         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
 
2171                 reqDetails, workflowResourceIds);
 
2172         assertEquals("id123", id);
 
2174         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
 
2175         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
 
2176                 .thenReturn(opVolumeGroup);
 
2178         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
 
2179         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
 
2180                 reqDetails, workflowResourceIds);
 
2181         assertEquals("generatedId123", id2);
 
2185     public void validatesourceIdInAAIVolumeGroupNotGloballyUniqueTest() throws Exception {
 
2186         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2187         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2188         workflowResourceIds.setVnfId("id123");
 
2189         GenericVnf vnf = new GenericVnf();
 
2190         vnf.setVnfId("id123");
 
2191         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
2192         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "testVolumeGroup")).thenReturn(Optional.empty());
 
2194         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
 
2195         this.expectedException.expect(DuplicateNameException.class);
 
2196         this.expectedException.expectMessage(
 
2197                 containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
 
2198         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup",
 
2199                 reqDetails, workflowResourceIds);
 
2203     public void validateResourceIdInAAIConfigurationTest() throws Exception {
 
2204         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2205         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2206         workflowResourceIds.setServiceInstanceId("siId123");
 
2209         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2210         configuration.setConfigurationId("id123");
 
2211         configuration.setConfigurationName("name123");
 
2212         configuration.setModelCustomizationId("1234567");
 
2213         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2215         org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
 
2216         configuration2.setConfigurationId("id123");
 
2217         configuration2.setConfigurationName("name123");
 
2218         configuration2.setModelCustomizationId("222");
 
2219         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
 
2221         workflowResourceIds.setVnfId("id123");
 
2223         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2224                 .thenReturn(opConfiguration);
 
2225         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
 
2226                 reqDetails, workflowResourceIds);
 
2227         assertEquals("id123", id);
 
2229         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
 
2230                 .thenReturn(Optional.empty());
 
2231         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
 
2232                 reqDetails, workflowResourceIds);
 
2233         assertEquals("generatedId123", id2);
 
2235         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
 
2236                 .thenReturn(opConfiguration2);
 
2237         this.expectedException.expect(DuplicateNameException.class);
 
2238         this.expectedException.expectMessage(containsString(
 
2239                 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
 
2240         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
 
2241                 workflowResourceIds);
 
2245     public void validateResourceIdInAAIConfigurationNotGloballyUniqueTest() throws Exception {
 
2246         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2247         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2248         workflowResourceIds.setServiceInstanceId("siId123");
 
2250         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "testConfig"))
 
2251                 .thenReturn(Optional.empty());
 
2252         when(bbSetupUtils.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
 
2253         this.expectedException.expect(DuplicateNameException.class);
 
2254         this.expectedException.expectMessage(
 
2255                 containsString("configuration with name testConfig already exists. The name must be unique."));
 
2256         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
 
2257                 workflowResourceIds);
 
2261     public void validateResourceIdInAAISITest() throws Exception {
 
2262         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2263         workflowResourceIds.setServiceInstanceId("siId123");
 
2264         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2265         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2267         ServiceInstance si = new ServiceInstance();
 
2268         si.setServiceInstanceId("siId123");
 
2269         si.setModelVersionId("1234567");
 
2270         ServiceInstances serviceInstances = new ServiceInstances();
 
2271         serviceInstances.getServiceInstance().add(si);
 
2272         Optional<ServiceInstance> siOp = Optional.of(si);
 
2273         ServiceInstance si2 = new ServiceInstance();
 
2274         si2.setServiceInstanceId("siId222");
 
2275         si2.setModelVersionId("22222");
 
2276         si2.setServiceInstanceName("siName222");
 
2277         Optional<ServiceInstance> siOp2 = Optional.of(si2);
 
2278         ServiceInstances serviceInstances2 = new ServiceInstances();
 
2279         serviceInstances2.getServiceInstance().add(si2);
 
2281         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2282         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
 
2283         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
 
2284                 .thenReturn(Optional.empty());
 
2286         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2287         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
 
2288                 reqDetails, workflowResourceIds);
 
2289         assertEquals("siId123", id);
 
2290         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
 
2291                 reqDetails, workflowResourceIds);
 
2292         assertEquals("generatedId123", id2);
 
2294         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
 
2295         this.expectedException.expect(DuplicateNameException.class);
 
2296         this.expectedException.expectMessage(containsString(
 
2297                 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
 
2298         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
 
2299                 workflowResourceIds);
 
2303     public void validateResourceIdInAAIMultipleSITest() throws Exception {
 
2304         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2305         workflowResourceIds.setServiceInstanceId("siId123");
 
2306         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2307         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2309         ServiceInstance si = new ServiceInstance();
 
2310         si.setServiceInstanceId("siId123");
 
2311         si.setModelVersionId("1234567");
 
2312         ServiceInstances serviceInstances = new ServiceInstances();
 
2313         serviceInstances.getServiceInstance().add(si);
 
2315         ServiceInstance si2 = new ServiceInstance();
 
2316         si2.setServiceInstanceId("siId222");
 
2317         si2.setModelVersionId("22222");
 
2318         si2.setServiceInstanceName("siName222");
 
2319         serviceInstances.getServiceInstance().add(si2);
 
2321         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
2322                 .thenReturn(Optional.empty());
 
2324         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2326         this.expectedException.expect(DuplicateNameException.class);
 
2327         this.expectedException.expectMessage(containsString(
 
2328                 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
 
2329         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
2330                 workflowResourceIds);
 
2334     public void validateResourceIdInAAISIExistsTest() throws Exception {
 
2335         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2336         workflowResourceIds.setServiceInstanceId("siId123");
 
2337         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2338         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2340         ServiceInstance si = new ServiceInstance();
 
2341         si.setServiceInstanceId("siId123");
 
2342         si.setModelVersionId("1234567");
 
2343         ServiceInstances serviceInstances = new ServiceInstances();
 
2344         serviceInstances.getServiceInstance().add(si);
 
2346         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
2347                 .thenReturn(Optional.empty());
 
2349         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
2351         Map<String, String> uriKeys = new HashMap<>();
 
2352         uriKeys.put("global-customer-id", "globalCustomerId");
 
2353         uriKeys.put("service-type", "serviceType");
 
2355         when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
 
2357         this.expectedException.expect(DuplicateNameException.class);
 
2358         this.expectedException.expectMessage(containsString(
 
2359                 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
 
2360         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
2361                 workflowResourceIds);
 
2365     public void validateServiceResourceIdInAAINoDupTest() throws Exception {
 
2366         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2367         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2368         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
 
2369                 .thenReturn(Optional.empty());
 
2370         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(null);
 
2371         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2372         assertEquals("generatedId123", id);
 
2376     public void validateServiceResourceIdInAAISameModelVersionId() throws Exception {
 
2377         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2378         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2380         ServiceInstance si = new ServiceInstance();
 
2381         si.setServiceInstanceId("siId123");
 
2382         si.setModelVersionId("1234567");
 
2383         Optional<ServiceInstance> siOp = Optional.of(si);
 
2385         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2386         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2387         assertEquals("siId123", id);
 
2391     public void validateServiceResourceIdInAAIDifferentModelVersionId() throws Exception {
 
2392         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2393         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2395         ServiceInstance si = new ServiceInstance();
 
2396         si.setServiceInstanceId("siId123");
 
2397         si.setModelVersionId("9999999");
 
2398         ServiceInstances serviceInstances = new ServiceInstances();
 
2399         serviceInstances.getServiceInstance().add(si);
 
2400         Optional<ServiceInstance> siOp = Optional.of(si);
 
2402         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
2404         this.expectedException.expect(DuplicateNameException.class);
 
2405         this.expectedException.expectMessage(containsString(
 
2406                 "serviceInstance with name (siName123) and different version id (1234567) already exists. The name must be unique."));
 
2408         String id = workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
 
2409         assertEquals("siId123", id);
 
2413     public void validateServiceResourceIdInAAIDuplicateNameTest() throws Exception {
 
2415         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2416         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2418         ServiceInstance si = new ServiceInstance();
 
2419         si.setServiceInstanceId("siId123");
 
2420         si.setModelVersionId("1234567");
 
2422         ServiceInstances serviceInstances = new ServiceInstances();
 
2423         serviceInstances.getServiceInstance().add(si);
 
2425         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
 
2426                 .thenReturn(Optional.empty());
 
2427         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
 
2429         this.expectedException.expect(DuplicateNameException.class);
 
2430         this.expectedException.expectMessage(containsString(
 
2431                 "serviceInstance with name (siName) and global-customer-id (null), service-type (null), model-version-id (1234567) already exists. The name must be unique."));
 
2433         workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
 
2437     public void validateServiceResourceIdInAAIDuplicateNameMultipleTest() throws Exception {
 
2439         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2440         reqDetails.getModelInfo().setModelVersionId("1234567");
 
2442         ServiceInstance si = new ServiceInstance();
 
2443         si.setServiceInstanceId("siId123");
 
2444         si.setModelVersionId("1234567");
 
2446         ServiceInstance si2 = new ServiceInstance();
 
2447         si2.setServiceInstanceId("siId222");
 
2448         si2.setModelVersionId("22222");
 
2449         si2.setServiceInstanceName("siName222");
 
2451         ServiceInstances serviceInstances = new ServiceInstances();
 
2452         serviceInstances.getServiceInstance().add(si);
 
2453         serviceInstances.getServiceInstance().add(si2);
 
2455         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName"))
 
2456                 .thenReturn(Optional.empty());
 
2457         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
 
2459         this.expectedException.expect(DuplicateNameException.class);
 
2460         this.expectedException.expectMessage(containsString(
 
2461                 "serviceInstance with name (siName) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
 
2463         workflowAction.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
 
2467     public void validateNetworkResourceIdInAAITest() throws Exception {
 
2468         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2469         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2470         workflowResourceIds.setServiceInstanceId("siId123");
 
2472         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
 
2473                 .thenReturn(Optional.empty());
 
2474         when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(false);
 
2476         String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2477                 workflowResourceIds);
 
2478         assertEquals("generatedId123", id);
 
2482     public void validateNetworkResourceIdInAAISameModelCustIdTest() throws Exception {
 
2483         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2484         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2485         workflowResourceIds.setServiceInstanceId("siId123");
 
2487         L3Network network = new L3Network();
 
2488         network.setNetworkId("id123");
 
2489         network.setNetworkName("name123");
 
2490         network.setModelCustomizationId("1234567");
 
2491         Optional<L3Network> opNetwork = Optional.of(network);
 
2493         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2495         String id = workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2496                 workflowResourceIds);
 
2497         assertEquals("id123", id);
 
2501     public void validateNetworkResourceIdInAAIDuplicateNameTest() throws Exception {
 
2502         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2503         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2504         workflowResourceIds.setServiceInstanceId("siId123");
 
2506         L3Network network = new L3Network();
 
2507         network.setNetworkId("id123");
 
2508         network.setNetworkName("name123");
 
2509         network.setModelCustomizationId("9999999");
 
2510         Optional<L3Network> opNetwork = Optional.of(network);
 
2512         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
2514         this.expectedException.expect(DuplicateNameException.class);
 
2515         this.expectedException.expectMessage(containsString(
 
2516                 "l3Network with name (name123), same parent and different customization id (9999999) already exists. The name must be unique."));
 
2518         workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2522     public void validateNetworkResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2523         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2524         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2525         workflowResourceIds.setServiceInstanceId("siId123");
 
2527         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
 
2528                 .thenReturn(Optional.empty());
 
2529         when(bbSetupUtils.existsAAINetworksGloballyByName("name123")).thenReturn(true);
 
2531         this.expectedException.expect(DuplicateNameException.class);
 
2532         this.expectedException.expectMessage(containsString(
 
2533                 "l3Network with name (name123) id (siId123) and different parent relationship already exists. The name must be unique."));
 
2535         workflowAction.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2539     public void validateVnfResourceIdInAAITest() throws Exception {
 
2540         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2541         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2542         workflowResourceIds.setServiceInstanceId("siId123");
 
2543         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
 
2544         String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
 
2545                 workflowResourceIds);
 
2546         assertEquals("generatedId123", id);
 
2550     public void validateVnfResourceIdInAAISameModelCustomizationIdTest() throws Exception {
 
2551         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2552         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2553         workflowResourceIds.setServiceInstanceId("siId123");
 
2555         GenericVnf vnf = new GenericVnf();
 
2556         vnf.setVnfId("id123");
 
2557         vnf.setVnfName("vnfName123");
 
2558         vnf.setModelCustomizationId("1234567");
 
2559         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
2561         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
2562         String id = workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
 
2563                 workflowResourceIds);
 
2564         assertEquals("id123", id);
 
2568     public void validateVnfResourceIdInAAIDiffModelCustomizationIdTest() throws Exception {
 
2569         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2570         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2571         workflowResourceIds.setServiceInstanceId("siId123");
 
2573         GenericVnf vnf = new GenericVnf();
 
2574         vnf.setVnfId("id123");
 
2575         vnf.setVnfName("vnfName123");
 
2576         vnf.setModelCustomizationId("9999999");
 
2577         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
2579         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
2581         this.expectedException.expect(DuplicateNameException.class);
 
2582         this.expectedException.expectMessage(containsString(
 
2583                 "generic-vnf with name (vnfName123), same parent and different customization id (9999999) already exists. The name must be unique."));
 
2585         workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
 
2589     public void validateVnfResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2590         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2591         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2592         workflowResourceIds.setServiceInstanceId("siId123");
 
2595         GenericVnf vnf = new GenericVnf();
 
2596         vnf.setVnfId("id123");
 
2597         vnf.setVnfName("vnfName123");
 
2598         GenericVnfs genericVnfs = new GenericVnfs();
 
2599         genericVnfs.getGenericVnf().add(vnf);
 
2601         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(Optional.empty());
 
2602         when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName123")).thenReturn(genericVnfs);
 
2604         this.expectedException.expect(DuplicateNameException.class);
 
2605         this.expectedException.expectMessage(containsString(
 
2606                 "generic-vnf with name (vnfName123) id (id123) and different parent relationship already exists. The name must be unique."));
 
2608         workflowAction.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
 
2612     public void validateVfModuleResourceIdTest() throws Exception {
 
2613         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2614         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2615         workflowResourceIds.setVnfId("vnfId123");
 
2617         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
 
2618         when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(false);
 
2620         String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2621                 workflowResourceIds);
 
2622         assertEquals("generatedId123", id);
 
2626     public void validateVfModuleResourceIdSameModelCustIdTest() throws Exception {
 
2627         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2628         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2629         workflowResourceIds.setVnfId("vnfId123");
 
2631         VfModules vfModules = new VfModules();
 
2632         VfModule vfModule = new VfModule();
 
2633         vfModule.setVfModuleId("id123");
 
2634         vfModule.setVfModuleName("name123");
 
2635         vfModule.setModelCustomizationId("1234567");
 
2636         vfModules.getVfModule().add(vfModule);
 
2638         GenericVnf vnf = new GenericVnf();
 
2639         vnf.setVnfId("id123");
 
2640         vnf.setVnfName("vnfName123");
 
2641         vnf.setVfModules(vfModules);
 
2643         when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
 
2645         String id = workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2646                 workflowResourceIds);
 
2647         assertEquals("id123", id);
 
2651     public void validateVfModuleResourceIdDifferentModelCustIdTest() throws Exception {
 
2652         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2653         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2654         workflowResourceIds.setVnfId("vnfId123");
 
2656         VfModules vfModules = new VfModules();
 
2657         VfModule vfModule = new VfModule();
 
2658         vfModule.setVfModuleId("id123");
 
2659         vfModule.setVfModuleName("name123");
 
2660         vfModule.setModelCustomizationId("9999999");
 
2661         vfModules.getVfModule().add(vfModule);
 
2663         GenericVnf vnf = new GenericVnf();
 
2664         vnf.setVnfId("id123");
 
2665         vnf.setVnfName("vnfName123");
 
2666         vnf.setVfModules(vfModules);
 
2668         when(bbSetupUtils.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
 
2670         this.expectedException.expect(DuplicateNameException.class);
 
2671         this.expectedException.expectMessage(containsString(
 
2672                 "vfModule with name (name123), same parent and different customization id (1234567) already exists. The name must be unique."));
 
2674         workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2679     public void validateVfModuleResourceIdNotGloballyUniqueTest() throws Exception {
 
2680         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2681         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2682         workflowResourceIds.setVnfId("vnfId123");
 
2684         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(null);
 
2685         when(bbSetupUtils.existsAAIVfModuleGloballyByName("name123")).thenReturn(true);
 
2687         this.expectedException.expect(DuplicateNameException.class);
 
2688         this.expectedException
 
2689                 .expectMessage(containsString("vfModule with name name123 already exists. The name must be unique."));
 
2691         workflowAction.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
 
2695     public void validateVolumeGroupResourceIdInAAITest() throws Exception {
 
2696         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2697         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2698         workflowResourceIds.setVnfId("vnfId123");
 
2700         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(Optional.empty());
 
2701         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(false);
 
2703         String id = workflowAction.validateVolumeGroupResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2704                 workflowResourceIds);
 
2705         assertEquals("generatedId123", id);
 
2709     public void validateVolumeGroupResourceIdInAAISameModelCustIdTest() throws Exception {
 
2710         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2711         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2712         workflowResourceIds.setServiceInstanceId("siId123");
 
2713         workflowResourceIds.setVnfId("vnfId123");
 
2715         VolumeGroup volumeGroup = new VolumeGroup();
 
2716         volumeGroup.setVolumeGroupId("id123");
 
2717         volumeGroup.setVolumeGroupName("name123");
 
2718         volumeGroup.setVfModuleModelCustomizationId("1234567");
 
2720         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2722         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
 
2723         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
 
2724                 reqDetails, workflowResourceIds);
 
2726         assertEquals("id123", id);
 
2730     public void validateVolumeGroupResourceIdInAAIDifferentModelCustIdTest() throws Exception {
 
2731         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2732         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2733         workflowResourceIds.setServiceInstanceId("siId123");
 
2734         workflowResourceIds.setVnfId("vnfId123");
 
2736         VolumeGroup volumeGroup = new VolumeGroup();
 
2737         volumeGroup.setVolumeGroupId("id123");
 
2738         volumeGroup.setVolumeGroupName("name123");
 
2739         volumeGroup.setVfModuleModelCustomizationId("9999999");
 
2741         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
2743         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
 
2745         this.expectedException.expect(DuplicateNameException.class);
 
2746         this.expectedException.expectMessage(
 
2747                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
 
2749         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
 
2750                 workflowResourceIds);
 
2754     public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2755         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2756         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2757         workflowResourceIds.setVnfId("vnfId123");
 
2759         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(Optional.empty());
 
2760         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(true);
 
2762         this.expectedException.expect(DuplicateNameException.class);
 
2763         this.expectedException.expectMessage(
 
2764                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
 
2766         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
 
2767                 workflowResourceIds);
 
2771     public void validateConfigurationResourceIdInAAITest() throws Exception {
 
2772         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2773         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2774         workflowResourceIds.setServiceInstanceId("siId123");
 
2776         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2777                 .thenReturn(Optional.empty());
 
2778         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2780         String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2781                 workflowResourceIds);
 
2782         assertEquals("generatedId123", id);
 
2786     public void validateConfigurationResourceIdInAAISameModelCustIdTest() throws Exception {
 
2787         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2788         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2789         workflowResourceIds.setServiceInstanceId("siId123");
 
2791         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2792         configuration.setConfigurationId("id123");
 
2793         configuration.setConfigurationName("name123");
 
2794         configuration.setModelCustomizationId("1234567");
 
2795         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2797         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2798                 .thenReturn(opConfiguration);
 
2799         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2801         String id = workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2802                 workflowResourceIds);
 
2803         assertEquals("id123", id);
 
2807     public void validateConfigurationResourceIdInAAIDifferentModelCustIdTest() throws Exception {
 
2808         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2809         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2810         workflowResourceIds.setServiceInstanceId("siId123");
 
2812         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
2813         configuration.setConfigurationId("id123");
 
2814         configuration.setConfigurationName("name123");
 
2815         configuration.setModelCustomizationId("9999999");
 
2816         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
2818         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2819                 .thenReturn(opConfiguration);
 
2820         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(false);
 
2822         this.expectedException.expect(DuplicateNameException.class);
 
2823         this.expectedException.expectMessage(containsString(
 
2824                 "configuration with name (name123), same parent and different customization id (id123) already exists. The name must be unique."));
 
2826         workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2827                 workflowResourceIds);
 
2831     public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
2832         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
2833         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
2834         workflowResourceIds.setServiceInstanceId("siId123");
 
2836         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
2837                 .thenReturn(Optional.empty());
 
2838         when(bbSetupUtils.existsAAIConfigurationGloballyByName("name123")).thenReturn(true);
 
2840         this.expectedException.expect(DuplicateNameException.class);
 
2841         this.expectedException.expectMessage(
 
2842                 containsString("configuration with name name123 already exists. The name must be unique."));
 
2844         workflowAction.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
 
2845                 workflowResourceIds);
 
2849     public void handleRuntimeExceptionTest() {
 
2850         execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
 
2851         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2853             workflowAction.handleRuntimeException(execution);
 
2854         } catch (BpmnError wfe) {
 
2855             assertEquals("MSOWorkflowException", wfe.getErrorCode());
 
2861     public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
 
2862         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2863         Service service = new Service();
 
2864         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
2865         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
2866         networkCust.setModelCustomizationUUID("123");
 
2867         networkCustomizations.add(networkCust);
 
2868         service.setNetworkCustomizations(networkCustomizations);
 
2869         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
2870                 new NetworkCollectionResourceCustomization();
 
2871         collectionResourceCustomization.setModelCustomizationUUID("123");
 
2872         CollectionResource collectionResource = new CollectionResource();
 
2873         collectionResource.setToscaNodeType("NetworkCollection");
 
2874         InstanceGroup instanceGroup = new InstanceGroup();
 
2875         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
2876         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
2877                 new CollectionResourceInstanceGroupCustomization();
 
2878         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
2879         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
2880         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
2881         collectionResource.setInstanceGroup(instanceGroup);
 
2882         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
2883         service.setModelUUID("abc");
 
2884         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2885         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2886         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
2887         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
2888                 .getNetworkCollectionResourceCustomizationByID("123");
 
2889         String bpmnRequest = new String(Files
 
2890                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
2891         ObjectMapper mapper = new ObjectMapper();
 
2892         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
2893         List<Resource> resourceCounter = new ArrayList<>();
 
2894         thrown.expect(BpmnError.class);
 
2895         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
2896         workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
 
2900     public void sortVfModulesByBaseFirstTest() {
 
2901         List<Resource> resources = new ArrayList<>();
 
2902         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2903         resource1.setBaseVfModule(false);
 
2904         resources.add(resource1);
 
2905         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2906         resource2.setBaseVfModule(false);
 
2907         resources.add(resource2);
 
2908         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2909         resource3.setBaseVfModule(true);
 
2910         resources.add(resource3);
 
2911         List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
 
2912         assertEquals("333", result.get(0).getResourceId());
 
2913         assertEquals("222", result.get(1).getResourceId());
 
2914         assertEquals("111", result.get(2).getResourceId());
 
2918     public void sortVfModulesByBaseLastTest() {
 
2919         List<Resource> resources = new ArrayList<>();
 
2920         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2921         resource1.setBaseVfModule(true);
 
2922         resources.add(resource1);
 
2923         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2924         resource2.setBaseVfModule(false);
 
2925         resources.add(resource2);
 
2926         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2927         resource3.setBaseVfModule(false);
 
2928         resources.add(resource3);
 
2929         List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
 
2930         assertEquals("333", result.get(0).getResourceId());
 
2931         assertEquals("222", result.get(1).getResourceId());
 
2932         assertEquals("111", result.get(2).getResourceId());
 
2936     public void findCatalogNetworkCollectionTest() {
 
2937         Service service = new Service();
 
2938         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
2939         networkCustomization.setModelCustomizationUUID("123");
 
2940         service.getCollectionResourceCustomizations().add(networkCustomization);
 
2941         doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
2942         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
2943         assertNotNull(customization);
 
2947     public void findCatalogNetworkCollectionEmptyTest() {
 
2948         Service service = new Service();
 
2949         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
2950         networkCustomization.setModelCustomizationUUID("123");
 
2951         service.getCollectionResourceCustomizations().add(networkCustomization);
 
2952         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
2953         assertNull(customization);
 
2957     public void findCatalogNetworkCollectionMoreThanOneTest() {
 
2958         Service service = new Service();
 
2959         NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
 
2960         networkCustomization1.setModelCustomizationUUID("123");
 
2961         NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
 
2962         networkCustomization2.setModelCustomizationUUID("321");
 
2963         service.getCollectionResourceCustomizations().add(networkCustomization1);
 
2964         service.getCollectionResourceCustomizations().add(networkCustomization2);
 
2965         doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
2966         doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
 
2967         workflowAction.findCatalogNetworkCollection(execution, service);
 
2968         assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
 
2969                 execution.getVariable("WorkflowActionErrorMessage"));
 
2973     public void verifyLackOfNullPointerExceptionForNullResource() {
 
2974         ExecuteBuildingBlock result = null;
 
2976             result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
 
2977                     false, null, null, null, false, null, true);
 
2978         } catch (NullPointerException e) {
 
2979             fail("NullPointerException should not be thrown when 'resource' is null");
 
2981         assertNotNull(result);
 
2985     public void traverseAAIServiceTest() {
 
2986         List<Resource> resourceCounter = new ArrayList<>();
 
2987         String resourceId = "si0";
 
2988         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
2990         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
2991         serviceInstanceAAI.setServiceInstanceId(resourceId);
 
2993         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
 
3001         Configuration config = new Configuration();
 
3002         config.setConfigurationId("testConfigurationId2");
 
3003         serviceInstance.getConfigurations().add(config);
 
3005         Relationship relationship1 = new Relationship();
 
3006         relationship1.setRelatedTo("vnfc");
 
3007         RelationshipList relationshipList1 = new RelationshipList();
 
3008         relationshipList1.getRelationship().add(relationship1);
 
3010         Relationship relationship2 = new Relationship();
 
3011         relationship2.setRelatedTo("vpn-binding");
 
3012         RelationshipList relationshipList2 = new RelationshipList();
 
3013         relationshipList2.getRelationship().add(relationship2);
 
3015         org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
 
3016         aaiConfiguration1.setConfigurationId("testConfigurationId");
 
3017         aaiConfiguration1.setRelationshipList(relationshipList1);
 
3019         org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
 
3020         aaiConfiguration2.setConfigurationId("testConfigurationId2");
 
3021         aaiConfiguration2.setRelationshipList(relationshipList1);
 
3024             doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
 
3025             doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
3026             doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
 
3027                     .getConfiguration("testConfigurationId");
 
3028             doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
 
3029                     .getConfiguration("testConfigurationId2");
 
3030             workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
 
3031             assertEquals(8, resourceCounter.size());
 
3032             assertTrue(resourceCounter.get(2).isBaseVfModule());
 
3033             assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
 
3034         } catch (Exception e) {
 
3035             fail("Unexpected exception was thrown.");
 
3039     private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
 
3040         List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
 
3041         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
 
3042         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
 
3043         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
 
3044         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
 
3045         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
 
3046         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
 
3047         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
 
3051     private List<OrchestrationFlow> createFlowList(String... flowNames) {
 
3052         List<OrchestrationFlow> result = new ArrayList<>();
 
3053         for (String flowName : flowNames) {
 
3054             OrchestrationFlow orchFlow = new OrchestrationFlow();
 
3055             orchFlow.setFlowName(flowName);
 
3056             result.add(orchFlow);
 
3061     private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
 
3062         for (int i = 0; i < ebbs.size(); i++) {
 
3063             assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);