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/";
 
 129     public void before() throws Exception {
 
 130         execution = new DelegateExecutionFake();
 
 131         org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
 
 132         servInstance.setServiceInstanceId("TEST");
 
 133         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
 
 134         workflowAction.setBbInputSetupUtils(bbSetupUtils);
 
 135         workflowAction.setBbInputSetup(bbInputSetup);
 
 142     public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
 
 143         String gAction = "createInstance";
 
 144         String resource = "Network";
 
 145         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 146         execution.setVariable("requestAction", gAction);
 
 148                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 149         execution.setVariable("bpmnRequest", bpmnRequest);
 
 150         execution.setVariable("aLaCarte", true);
 
 151         execution.setVariable("apiVersion", "7");
 
 152         execution.setVariable("requestUri", "v6/networks/123");
 
 154         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 155         List<OrchestrationFlow> orchFlows =
 
 156                 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 157         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 159         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 160                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 161         workflowAction.selectExecutionList(execution);
 
 162         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 163         assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 167     public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
 
 168         String gAction = "deleteInstance";
 
 169         String resource = "Network";
 
 170         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 171         execution.setVariable("requestAction", gAction);
 
 173                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 174         execution.setVariable("bpmnRequest", bpmnRequest);
 
 175         execution.setVariable("aLaCarte", true);
 
 176         execution.setVariable("apiVersion", "7");
 
 177         execution.setVariable("requestUri", "v6/networks/123");
 
 179         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 180         List<OrchestrationFlow> orchFlows =
 
 181                 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 182         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 184         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 185                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 186         workflowAction.selectExecutionList(execution);
 
 187         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 188         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 192     public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
 
 193         String gAction = "createInstance";
 
 194         String resource = "Service";
 
 195         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 196         execution.setVariable("requestAction", gAction);
 
 198                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 199         execution.setVariable("bpmnRequest", bpmnRequest);
 
 200         execution.setVariable("aLaCarte", true);
 
 201         execution.setVariable("apiVersion", "7");
 
 202         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 205         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 206         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 207         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 209         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 210                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 211         workflowAction.selectExecutionList(execution);
 
 212         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 213         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 217      * SERVICE MACRO TESTS
 
 220     public void selectExecutionListServiceMacroAssignTest() throws Exception {
 
 221         String gAction = "assignInstance";
 
 222         String resource = "Service";
 
 223         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 224         execution.setVariable("requestAction", gAction);
 
 226                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 227         execution.setVariable("bpmnRequest", bpmnRequest);
 
 228         execution.setVariable("aLaCarte", false);
 
 229         execution.setVariable("apiVersion", "7");
 
 230         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 233         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 234         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 235                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 236         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 238         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 239         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 240         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 241         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 242         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 243         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 244         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 245         vfModuleCustomization.setVfModule(vfModule);
 
 247         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 248         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 249         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 250         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 251         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 252         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 253         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 254         vfModuleCustomization2.setVfModule(vfModule2);
 
 256         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 257         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 259         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 260                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 261         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 262                 .thenReturn(vfModuleCustomization);
 
 263         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 264                 .thenReturn(vfModuleCustomization2);
 
 265         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 266                 .thenReturn(vfModuleCustomization3);
 
 267         workflowAction.selectExecutionList(execution);
 
 268         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 269         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 270                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 274     public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
 
 275         String gAction = "assignInstance";
 
 276         String resource = "Service";
 
 277         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 278         execution.setVariable("requestAction", gAction);
 
 279         String bpmnRequest = new String(
 
 280                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
 
 281         execution.setVariable("bpmnRequest", bpmnRequest);
 
 282         execution.setVariable("aLaCarte", false);
 
 283         execution.setVariable("apiVersion", "7");
 
 284         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 287         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 288         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 289                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 290         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 292         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 293         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 294         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 295         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 296         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 297         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 298         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 299         vfModuleCustomization.setVfModule(vfModule);
 
 301         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 302         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 303         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 304         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 305         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 306         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 307         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 308         vfModuleCustomization2.setVfModule(vfModule2);
 
 310         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 311         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 313         when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
 
 314         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 315                 false, "att-aic")).thenReturn(northBoundRequest);
 
 316         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 317                 .thenReturn(vfModuleCustomization);
 
 318         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 319                 .thenReturn(vfModuleCustomization2);
 
 320         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 321                 .thenReturn(vfModuleCustomization3);
 
 322         workflowAction.selectExecutionList(execution);
 
 323         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 324         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 325                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 329     public void selectExecutionListServiceMacroActivateTest() throws Exception {
 
 330         String gAction = "activateInstance";
 
 331         String resource = "Service";
 
 332         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 333         execution.setVariable("requestAction", gAction);
 
 334         String bpmnRequest = new String(Files
 
 335                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 336         execution.setVariable("bpmnRequest", bpmnRequest);
 
 337         execution.setVariable("aLaCarte", false);
 
 338         execution.setVariable("apiVersion", "7");
 
 339         execution.setVariable("requestUri", "v6/serviceInstances/si0");
 
 342         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 343         List<OrchestrationFlow> orchFlows =
 
 344                 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 345                         "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
 
 346         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 348         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 349         serviceInstanceAAI.setServiceInstanceId("si0");
 
 350         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 351                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 352         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 353                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 354         vnf.setVnfId("vnf0");
 
 357         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 358         vnf.getVfModules().add(vfModule);
 
 359         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 360         vnf.getVfModules().add(vfModule2);
 
 362         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 363                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 364         volumeGroup.setVolumeGroupId("volumeGroup0");
 
 365         vnf.getVolumeGroups().add(volumeGroup);
 
 367         serviceInstanceMSO.getVnfs().add(vnf);
 
 369         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
 
 370         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 371         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 372                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 373         workflowAction.selectExecutionList(execution);
 
 374         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 375         assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 376                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 377                 "ActivateServiceInstanceBB");
 
 378         assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
 
 379         assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
 
 380         assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
 
 381         assertEquals("testVfModuleId2", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
 
 382         assertEquals("testVfModuleId1", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
 
 383         assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
 
 384         assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
 
 385         assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
 
 390     public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
 
 391         String gAction = "deactivateInstance";
 
 392         String resource = "Service";
 
 393         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 394         execution.setVariable("requestAction", gAction);
 
 395         String bpmnRequest = new String(Files
 
 396                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 397         execution.setVariable("bpmnRequest", bpmnRequest);
 
 398         execution.setVariable("aLaCarte", false);
 
 399         execution.setVariable("apiVersion", "7");
 
 400         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 403         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 404         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
 
 405         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 407         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 408                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 409         workflowAction.selectExecutionList(execution);
 
 410         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 411         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
 
 415     public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
 
 416         String gAction = "createInstance";
 
 417         String resource = "Service";
 
 418         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 419         execution.setVariable("requestAction", gAction);
 
 420         String bpmnRequest = new String(Files
 
 421                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 422         execution.setVariable("bpmnRequest", bpmnRequest);
 
 423         execution.setVariable("aLaCarte", false);
 
 424         execution.setVariable("apiVersion", "7");
 
 425         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 428         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 429         northBoundRequest.setIsToplevelflow(true);
 
 430         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 431                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 432                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 433                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 434                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 435         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 437         Service service = new Service();
 
 438         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 439         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 440                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 441         workflowAction.selectExecutionList(execution);
 
 442         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 443         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 447     public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
 
 448         String gAction = "createInstance";
 
 449         String resource = "Service";
 
 450         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 451         execution.setVariable("requestAction", gAction);
 
 452         String bpmnRequest = new String(Files
 
 453                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 454         execution.setVariable("bpmnRequest", bpmnRequest);
 
 455         execution.setVariable("aLaCarte", false);
 
 456         execution.setVariable("apiVersion", "7");
 
 457         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 460         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 461         northBoundRequest.setIsToplevelflow(true);
 
 462         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 463                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 464                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 465                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 466                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 467         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 469         Service service = new Service();
 
 470         NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
 
 471         networkCustomization.setModelCustomizationUUID("1234");
 
 472         service.getNetworkCustomizations().add(networkCustomization);
 
 473         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 474         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 475                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 476         workflowAction.selectExecutionList(execution);
 
 477         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 478         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
 
 479                 "ActivateNetworkBB", "ActivateServiceInstanceBB");
 
 483     public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
 
 484         String gAction = "createInstance";
 
 485         String resource = "Service";
 
 486         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 487         execution.setVariable("requestAction", gAction);
 
 488         String bpmnRequest = new String(Files
 
 489                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 490         execution.setVariable("bpmnRequest", bpmnRequest);
 
 491         execution.setVariable("aLaCarte", false);
 
 492         execution.setVariable("apiVersion", "7");
 
 493         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 496         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 497         northBoundRequest.setIsToplevelflow(true);
 
 498         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 499                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 500                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 501                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 502                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 503         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 505         Service service = new Service();
 
 506         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
 507         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
 508         networkCust.setModelCustomizationUUID("123");
 
 509         networkCustomizations.add(networkCust);
 
 510         service.setNetworkCustomizations(networkCustomizations);
 
 511         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
 512                 new NetworkCollectionResourceCustomization();
 
 513         collectionResourceCustomization.setModelCustomizationUUID("123");
 
 515         CollectionResource collectionResource = new CollectionResource();
 
 516         collectionResource.setToscaNodeType("NetworkCollection");
 
 517         InstanceGroup instanceGroup = new InstanceGroup();
 
 518         instanceGroup.setToscaNodeType("NetworkCollectionResource");
 
 519         instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
 
 520         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
 
 521                 new CollectionNetworkResourceCustomization();
 
 522         collectionNetworkResourceCust.setModelCustomizationUUID("123");
 
 523         collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
 
 524         instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
 
 525         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
 526         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
 527                 new CollectionResourceInstanceGroupCustomization();
 
 528         collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
 
 529         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
 530         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
 531         collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
 
 532         collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
 
 533         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
 534         collectionResource.setInstanceGroup(instanceGroup);
 
 535         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
 536         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 537         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 538         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
 539                 .getNetworkCollectionResourceCustomizationByID("123");
 
 540         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 541                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 542         workflowAction.selectExecutionList(execution);
 
 543         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 544         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
 
 545                 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 546                 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
 
 547                 "ActivateServiceInstanceBB");
 
 548         assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 549         assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 550         assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 551         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 552                 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
 
 554                         && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
 
 557         assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 558         assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 559         assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 560         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 561                 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
 
 563                         && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
 
 566         assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 567         assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 568         assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 569         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 570                 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
 
 572                         && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
 
 578     public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
 
 579         String gAction = "createInstance";
 
 580         String resource = "Service";
 
 581         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 582         execution.setVariable("requestAction", gAction);
 
 584                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
 585         execution.setVariable("bpmnRequest", bpmnRequest);
 
 586         execution.setVariable("aLaCarte", false);
 
 587         execution.setVariable("apiVersion", "7");
 
 588         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 591         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 592         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 593                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 594                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 595                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 596                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 597         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 599         Service service = new Service();
 
 600         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 602         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 603         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 604         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 605         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 606         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 607         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 608         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 609         vfModuleCustomization.setVfModule(vfModule);
 
 611         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 612         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 613         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 614         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 615         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 616         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 617         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 618         vfModuleCustomization2.setVfModule(vfModule2);
 
 620         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 621         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 623         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 624                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 625         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 626                 .thenReturn(vfModuleCustomization);
 
 627         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 628                 .thenReturn(vfModuleCustomization2);
 
 629         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 630                 .thenReturn(vfModuleCustomization3);
 
 631         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 632         workflowAction.selectExecutionList(execution);
 
 633         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 634         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 635                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
 
 636                 "ActivateVolumeGroupBB", "CreateVfModuleBB", "CreateVfModuleBB", "CreateVfModuleBB",
 
 637                 "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 638                 "ActivateServiceInstanceBB");
 
 639         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 640         int randomUUIDLength = UUID.randomUUID().toString().length();
 
 641         assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
 
 642         assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
 
 643         assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
 
 644         assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
 
 645         assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
 
 646         assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
 
 647         assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
 
 648         assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
 
 649         assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
 
 650         assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
 
 651         assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
 
 652         assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
 
 653         assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
 
 654         assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
 
 655         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 656         assertEquals(true, execution.getVariable("homing"));
 
 660     public void selectExecutionListServiceMacroDeleteTest() throws Exception {
 
 661         String gAction = "deleteInstance";
 
 662         String resource = "Service";
 
 663         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 664         execution.setVariable("requestAction", gAction);
 
 665         String bpmnRequest = new String(Files
 
 666                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 667         execution.setVariable("bpmnRequest", bpmnRequest);
 
 668         execution.setVariable("aLaCarte", false);
 
 669         execution.setVariable("apiVersion", "7");
 
 670         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 673         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 674         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 675                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
 676                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
 677                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 678         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 680         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 681         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 682         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 683                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 684         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 685                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 686         vnf.setVnfId("vnfId123");
 
 688         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 689         vnf.getVfModules().add(vfModule);
 
 690         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 691         vnf.getVfModules().add(vfModule2);
 
 693         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 694                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 695         volumeGroup.setVolumeGroupId("vg123");
 
 696         vnf.getVolumeGroups().add(volumeGroup);
 
 698         serviceInstanceMSO.getVnfs().add(vnf);
 
 700         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 701         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 702         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 703                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 704         workflowAction.selectExecutionList(execution);
 
 705         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 706         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 707                 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
 
 708                 "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 709                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 713     public void selectExecutionListServiceMacroUnassignTest() throws Exception {
 
 714         String gAction = "unassignInstance";
 
 715         String resource = "Service";
 
 716         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 717         execution.setVariable("requestAction", gAction);
 
 718         String bpmnRequest = new String(Files
 
 719                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 720         execution.setVariable("bpmnRequest", bpmnRequest);
 
 721         execution.setVariable("aLaCarte", false);
 
 722         execution.setVariable("apiVersion", "7");
 
 723         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 726         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 727         List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 728                 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 729         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 731         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 732         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 733         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 734                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 735         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 736                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 737         vnf.setVnfId("vnfId123");
 
 739         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 740         vnf.getVfModules().add(vfModule);
 
 741         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 742         vnf.getVfModules().add(vfModule2);
 
 744         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 745                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 746         volumeGroup.setVolumeGroupId("vg123");
 
 747         vnf.getVolumeGroups().add(volumeGroup);
 
 749         serviceInstanceMSO.getVnfs().add(vnf);
 
 751         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 752         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 753         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 754                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 755         workflowAction.selectExecutionList(execution);
 
 756         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 757         assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
 758                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 762     public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
 
 763         String gAction = "deleteInstance";
 
 764         String resource = "Service";
 
 765         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 766         execution.setVariable("requestAction", gAction);
 
 767         String bpmnRequest = new String(Files
 
 768                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
 769         execution.setVariable("bpmnRequest", bpmnRequest);
 
 770         execution.setVariable("aLaCarte", false);
 
 771         execution.setVariable("apiVersion", "7");
 
 772         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 775         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 776         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 777                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
 778                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
 779                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
 780         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 782         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 783         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 784         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 785                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 787         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
 
 788                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 789         network.setNetworkId("123");
 
 790         serviceInstanceMSO.getNetworks().add(network);
 
 791         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
 
 792                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
 793         network2.setNetworkId("321");
 
 794         serviceInstanceMSO.getNetworks().add(network2);
 
 796         Collection collection = new Collection();
 
 797         serviceInstanceMSO.setCollection(collection);
 
 799         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 800         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 801         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 802                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 803         workflowAction.selectExecutionList(execution);
 
 804         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 805         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
 806                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
 
 807                 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
 811     public void selectExecutionListVnfMacroRecreateTest() throws Exception {
 
 812         String gAction = "recreateInstance";
 
 813         String resource = "Vnf";
 
 814         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 815         execution.setVariable("requestAction", gAction);
 
 817                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
 
 818         execution.setVariable("bpmnRequest", bpmnRequest);
 
 819         execution.setVariable("aLaCarte", false);
 
 820         execution.setVariable("apiVersion", "7");
 
 821         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
 
 822         execution.setVariable("serviceInstanceId", "123");
 
 823         execution.setVariable("vnfId", "1234");
 
 825         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 826         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 827                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 828                 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
 829                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 830                 "AAIUnsetVnfInMaintBB");
 
 831         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 833         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 834         serviceInstanceAAI.setServiceInstanceId("123");
 
 835         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 836                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 837         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 838                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 839         vnf.setVnfId("1234");
 
 841         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 842                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 843         vfModule.setVfModuleId("vfModule1");
 
 844         vnf.getVfModules().add(vfModule);
 
 845         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 846                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 847         vfModule2.setVfModuleId("vfModule2");
 
 848         vnf.getVfModules().add(vfModule2);
 
 850         serviceInstanceMSO.getVnfs().add(vnf);
 
 852         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 853         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 854         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 855                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 856         workflowAction.selectExecutionList(execution);
 
 857         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 858         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
 
 859                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
 
 860                 "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
 861                 "AAIUnsetVnfInMaintBB");
 
 865     public void selectExecutionListVnfMacroReplaceTest() throws Exception {
 
 866         String gAction = "replaceInstance";
 
 867         String resource = "Vnf";
 
 868         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 869         execution.setVariable("requestAction", gAction);
 
 871                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
 
 872         execution.setVariable("bpmnRequest", bpmnRequest);
 
 873         execution.setVariable("aLaCarte", false);
 
 874         execution.setVariable("apiVersion", "7");
 
 875         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
 
 876         execution.setVariable("serviceInstanceId", "123");
 
 877         execution.setVariable("vnfId", "1234");
 
 879         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 880         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
 881                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
 882                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
 883                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
 
 884                 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
 
 885                 "AAIUnsetVnfInMaintBB");
 
 886         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 888         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 889         serviceInstanceAAI.setServiceInstanceId("123");
 
 890         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 891                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 892         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 893                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 894         vnf.setVnfId("1234");
 
 895         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
 896                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 897         vfModule.setVfModuleId("vfModule1");
 
 898         vnf.getVfModules().add(vfModule);
 
 899         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
 900                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
 901         vfModule2.setVfModuleId("vfModule2");
 
 902         vnf.getVfModules().add(vfModule2);
 
 903         serviceInstanceMSO.getVnfs().add(vnf);
 
 904         VfModule vfModuleAAI = new VfModule();
 
 905         vfModuleAAI.setVfModuleId("vfModule2");
 
 906         RelationshipList relationshipList = new RelationshipList();
 
 907         Relationship relationship = new Relationship();
 
 908         relationshipList.getRelationship().add(relationship);
 
 909         vfModuleAAI.setRelationshipList(relationshipList);
 
 910         Relationships relationships = new Relationships("abc");
 
 911         Configuration config = new Configuration();
 
 912         config.setConfigurationId("configId");
 
 913         Optional<Configuration> configOp = Optional.of(config);
 
 914         Optional<Relationships> relationshipsOp = Optional.of(relationships);
 
 916         doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
 
 917         doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
 
 918         doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
 
 919         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 920         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 921         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 922                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
 923         workflowAction.selectExecutionList(execution);
 
 924         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 925         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB",
 
 926                 "UnassignFabricConfigurationBB", "DeactivateVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 927                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "ChangeModelVfModuleBB",
 
 928                 "CreateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVfModuleBB",
 
 929                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB",
 
 930                 "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
 931         for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
 
 932             assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
 
 938     public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
 
 939         String gAction = "createInstance";
 
 940         String resource = "NetworkCollection";
 
 941         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 942         execution.setVariable("requestAction", gAction);
 
 943         String bpmnRequest = new String(
 
 944                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
 
 945         execution.setVariable("bpmnRequest", bpmnRequest);
 
 946         execution.setVariable("aLaCarte", false);
 
 947         execution.setVariable("apiVersion", "7");
 
 948         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 951         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 952         List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
 
 953                 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
 
 954         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 956         Service service = new Service();
 
 957         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
 958         CollectionResource collectionResource = new CollectionResource();
 
 959         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
 960         collectionResourceCustomization.setCollectionResource(collectionResource);
 
 961         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 963         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 964                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 965         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 966         workflowAction.selectExecutionList(execution);
 
 967         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 968         assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
 
 969                 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 970                 "ActivateNetworkCollectionBB");
 
 975     public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
 
 976         String gAction = "deleteInstance";
 
 977         String resource = "NetworkCollection";
 
 978         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
 979         execution.setVariable("requestAction", gAction);
 
 980         String bpmnRequest = new String(
 
 981                 Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
 
 982         execution.setVariable("bpmnRequest", bpmnRequest);
 
 983         execution.setVariable("aLaCarte", false);
 
 984         execution.setVariable("apiVersion", "7");
 
 985         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
 987         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 988         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
 
 989                 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
 
 990         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 992         Service service = new Service();
 
 993         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
 994         CollectionResource collectionResource = new CollectionResource();
 
 995         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
 996         collectionResourceCustomization.setCollectionResource(collectionResource);
 
 997         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 999         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1000                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1001         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1002         workflowAction.selectExecutionList(execution);
 
1003         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1004         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1005                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
 
1006                 "DeleteNetworkCollectionBB");
 
1010     public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
 
1011         String gAction = "createInstance";
 
1012         String resource = "VfModule";
 
1013         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1014         execution.setVariable("requestAction", gAction);
 
1015         String bpmnRequest =
 
1016                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1017         execution.setVariable("bpmnRequest", bpmnRequest);
 
1018         execution.setVariable("aLaCarte", true);
 
1019         execution.setVariable("apiVersion", "7");
 
1020         execution.setVariable("requestUri",
 
1021                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1024         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1025         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1026                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1027         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1029         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1030                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1031         workflowAction.selectExecutionList(execution);
 
1032         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1033         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1037     public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
 
1038         String gAction = "createInstance";
 
1039         String resource = "VfModule";
 
1040         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1041         execution.setVariable("requestAction", gAction);
 
1042         String bpmnRequest =
 
1043                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1044         execution.setVariable("bpmnRequest", bpmnRequest);
 
1045         execution.setVariable("aLaCarte", true);
 
1046         execution.setVariable("apiVersion", "7");
 
1047         execution.setVariable("requestUri",
 
1048                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1050         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1051         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1052                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1053         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1055         List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
 
1056         CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
 
1057         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
 
1058                 new CvnfcConfigurationCustomization();
 
1059         ConfigurationResource configurationResource = new ConfigurationResource();
 
1060         configurationResource.setToscaNodeType("FabricConfiguration");
 
1061         vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
 
1062         vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
 
1063         vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
 
1064         List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
 
1065         custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
 
1066         cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
 
1067         cvnfcCustomization.setDescription("description");
 
1068         cvnfcCustomizations.add(cvnfcCustomization);
 
1070         CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
 
1071         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
 
1072                 new CvnfcConfigurationCustomization();
 
1073         ConfigurationResource configurationResource2 = new ConfigurationResource();
 
1074         configurationResource2.setToscaNodeType("FabricConfiguration");
 
1075         vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
 
1076         vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
 
1077         vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
 
1078         List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
 
1079         custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
 
1080         cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
 
1081         cvnfcCustomization2.setDescription("description2");
 
1082         cvnfcCustomizations.add(cvnfcCustomization2);
 
1084         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1085                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1086         // when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID("fc25201d-36d6-43a3-8d39-fdae88e526ae",
 
1087         // "9a6d01fd-19a7-490a-9800-460830a12e0b")).thenReturn(cvnfcCustomizations);
 
1088         workflowAction.selectExecutionList(execution);
 
1089         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1090         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1091                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "AssignFabricConfigurationBB",
 
1092                 "ActivateFabricConfigurationBB");
 
1096     public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
 
1097         String gAction = "deleteInstance";
 
1098         String resource = "VfModule";
 
1099         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1100         execution.setVariable("requestAction", gAction);
 
1101         String bpmnRequest =
 
1102                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1103         execution.setVariable("bpmnRequest", bpmnRequest);
 
1104         execution.setVariable("aLaCarte", true);
 
1105         execution.setVariable("apiVersion", "7");
 
1106         execution.setVariable("requestUri",
 
1107                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1109         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1110         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1111                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1112         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1114         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1115                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1117         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1118         vnf.setVnfId("vnf0");
 
1119         vnf.setModelCustomizationId("modelCustomizationId");
 
1120         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1122         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1123         vfModule.setModelCustomizationId("modelCustomizationId");
 
1124         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1126         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1127         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1128         vnfc.setModelInvariantId("modelInvariantId");
 
1129         vnfc.setVnfcName("testVnfcName");
 
1131         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1134         List<org.onap.aai.domain.yang.Configuration> configurations =
 
1135                 new ArrayList<org.onap.aai.domain.yang.Configuration>();
 
1136         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1137         configuration.setConfigurationId("configurationId");
 
1138         configuration.setModelCustomizationId("modelCustimizationId");
 
1139         configuration.setConfigurationName("testConfigurationName");
 
1140         configurations.add(configuration);
 
1141         doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1144         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
 
1146         SPY_workflowAction.selectExecutionList(execution);
 
1147         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1148         assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
 
1149                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1153     public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
 
1154         String gAction = "deleteInstance";
 
1155         ObjectMapper mapper = new ObjectMapper();
 
1156         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1157         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1158         execution.setVariable("requestAction", gAction);
 
1159         String bpmnRequest =
 
1160                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1161         execution.setVariable("bpmnRequest", bpmnRequest);
 
1162         execution.setVariable("vnfId", "1234");
 
1163         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1164         execution.setVariable("requestUri",
 
1165                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1166         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1167         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1168         String requestAction = "deleteInstance";
 
1169         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1170         boolean aLaCarte = true;
 
1171         String apiVersion = "7";
 
1172         String vnfType = "vnfType";
 
1173         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1174         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1175         Resource resourceKey = new Resource(resourceType, key, aLaCarte);
 
1176         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1178         thrown.expect(AAIEntityNotFoundException.class);
 
1179         thrown.expectMessage(containsString(
 
1180                 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
 
1182         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1183                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1185         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1186                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1187                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1188                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1190         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1191         vnf.setVnfId("vnf0");
 
1192         vnf.setModelCustomizationId("modelCustomizationId");
 
1193         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1195         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1196         vfModule.setModelCustomizationId("modelCustomizationId");
 
1197         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
 
1199         SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1203     public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
 
1204         String gAction = "deleteInstance";
 
1205         String resource = "VfModule";
 
1206         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1207         execution.setVariable("requestAction", gAction);
 
1208         String bpmnRequest =
 
1209                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1210         execution.setVariable("bpmnRequest", bpmnRequest);
 
1211         execution.setVariable("aLaCarte", true);
 
1212         execution.setVariable("apiVersion", "7");
 
1213         execution.setVariable("requestUri",
 
1214                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1216         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1217         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1218                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1219         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1221         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1222                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1224         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1225         vnf.setVnfId("vnf0");
 
1226         vnf.setModelCustomizationId("modelCustomizationId");
 
1227         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1229         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1230         vfModule.setModelCustomizationId("modelCustomizationId");
 
1231         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1233         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1234         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1235         vnfc.setModelInvariantId("modelInvariantId");
 
1236         vnfc.setVnfcName("testVnfcName");
 
1238         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1241         List<org.onap.aai.domain.yang.Configuration> configurations =
 
1242                 new ArrayList<org.onap.aai.domain.yang.Configuration>();
 
1243         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1244         doReturn(configurations).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1247         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
 
1249         SPY_workflowAction.selectExecutionList(execution);
 
1250         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1251         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1255     public void selectExecutionListMacroResumeTest() throws Exception {
 
1256         String gAction = "createInstance";
 
1257         String resource = "Service";
 
1258         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1259         execution.setVariable("requestAction", gAction);
 
1260         String bpmnRequest =
 
1261                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
 
1262         execution.setVariable("bpmnRequest", bpmnRequest);
 
1263         execution.setVariable("aLaCarte", false);
 
1264         execution.setVariable("apiVersion", "7");
 
1265         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
1267         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1268         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1269         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1271         Service service = new Service();
 
1272         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
1274         ServiceInstance si = new ServiceInstance();
 
1276         when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
 
1277         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1279         String flowsToExecuteString =
 
1280                 "[{\"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\"}}]";
 
1281         ObjectMapper om = new ObjectMapper();
 
1282         List<ExecuteBuildingBlock> flowsToExecute = null;
 
1284             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
1285             flowsToExecute = Arrays.asList(asArray);
 
1286         } catch (Exception e) {
 
1287             e.printStackTrace();
 
1290         when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
 
1292         workflowAction.selectExecutionList(execution);
 
1293         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1294         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
 
1298     public void getRelatedResourcesInVfModuleTest() throws Exception {
 
1299         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1300         vnfc.setModelInvariantId("modelInvariantId");
 
1301         vnfc.setVnfcName("testVnfcName");
 
1303         String vfncPayload =
 
1304                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
 
1305         AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
 
1307         String configurationPayload =
 
1308                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
 
1309         AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
 
1310         List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
 
1311         configurationResultWrappers.add(configurationWrapper);
 
1313         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
 
1314         when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
 
1316         doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
 
1318         List<org.onap.aai.domain.yang.Configuration> configurationsList = SPY_workflowAction.getRelatedResourcesInVnfc(
 
1319                 vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION);
 
1320         assertEquals(1, configurationsList.size());
 
1321         assertEquals("testConfigurationId", configurationsList.get(0).getConfigurationId());
 
1325      * WorkflowActionBB Tests
 
1329     public void pluralTest() {
 
1330         List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
 
1331                 "networks, Network", "invalidNames, invalidNames");
 
1332         items.forEach(item -> {
 
1333             String[] split = item.split(",");
 
1334             String type = split[0].trim();
 
1335             String expected = split[1].trim();
 
1336             assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
 
1341     public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception {
 
1342         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1343         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
 
1344         BuildingBlock bb = new BuildingBlock();
 
1345         bb.setBpmnFlowName("AssignNetworkBB");
 
1347         ebb.setBuildingBlock(bb);
 
1348         executeFlows.add(ebb);
 
1349         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
 
1350         BuildingBlock bb2 = new BuildingBlock();
 
1351         bb2.setBpmnFlowName("AssignNetworkBB");
 
1353         ebb2.setBuildingBlock(bb2);
 
1354         executeFlows.add(ebb2);
 
1355         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
 
1356         BuildingBlock bb3 = new BuildingBlock();
 
1357         bb3.setBpmnFlowName("CreateNetworkBB");
 
1359         ebb3.setBuildingBlock(bb3);
 
1360         executeFlows.add(ebb3);
 
1361         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
 
1362         BuildingBlock bb4 = new BuildingBlock();
 
1363         bb4.setBpmnFlowName("CreateNetworkBB");
 
1365         ebb4.setBuildingBlock(bb4);
 
1366         executeFlows.add(ebb4);
 
1367         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
 
1368         BuildingBlock bb5 = new BuildingBlock();
 
1369         bb5.setBpmnFlowName("ActivateNetworkBB");
 
1371         ebb5.setBuildingBlock(bb5);
 
1372         executeFlows.add(ebb5);
 
1373         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
 
1374         BuildingBlock bb6 = new BuildingBlock();
 
1375         bb6.setBpmnFlowName("ActivateNetworkBB");
 
1377         ebb6.setBuildingBlock(bb6);
 
1378         executeFlows.add(ebb6);
 
1380         List<ExecuteBuildingBlock> sorted =
 
1381                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
 
1382         assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
 
1383                 "CreateNetworkBB", "ActivateNetworkBB");
 
1387     public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception {
 
1388         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
1389         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
 
1390         BuildingBlock bb = new BuildingBlock();
 
1391         bb.setBpmnFlowName("DeactivateNetworkBB");
 
1393         ebb.setBuildingBlock(bb);
 
1394         executeFlows.add(ebb);
 
1395         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
 
1396         BuildingBlock bb2 = new BuildingBlock();
 
1397         bb2.setBpmnFlowName("DeactivateNetworkBB");
 
1399         ebb2.setBuildingBlock(bb2);
 
1400         executeFlows.add(ebb2);
 
1401         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
 
1402         BuildingBlock bb3 = new BuildingBlock();
 
1403         bb3.setBpmnFlowName("DeleteNetworkBB");
 
1405         ebb3.setBuildingBlock(bb3);
 
1406         executeFlows.add(ebb3);
 
1407         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
 
1408         BuildingBlock bb4 = new BuildingBlock();
 
1409         bb4.setBpmnFlowName("DeleteNetworkBB");
 
1411         ebb4.setBuildingBlock(bb4);
 
1412         executeFlows.add(ebb4);
 
1413         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
 
1414         BuildingBlock bb5 = new BuildingBlock();
 
1415         bb5.setBpmnFlowName("UnassignNetworkBB");
 
1417         ebb5.setBuildingBlock(bb5);
 
1418         executeFlows.add(ebb5);
 
1419         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
 
1420         BuildingBlock bb6 = new BuildingBlock();
 
1421         bb6.setBpmnFlowName("UnassignNetworkBB");
 
1423         ebb6.setBuildingBlock(bb6);
 
1424         executeFlows.add(ebb6);
 
1426         List<ExecuteBuildingBlock> sorted =
 
1427                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
 
1428         assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1429                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
 
1433     public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
 
1434         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1435         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
1436                 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
1437         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1438         List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1439                 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
 
1441         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
 
1442                 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1443         when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
 
1444         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
 
1445                 WorkflowType.VNF, false, "my-custom-cloud-owner");
 
1446         assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
 
1447         assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
 
1448         assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
 
1449         assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
 
1450         assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
 
1451         assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
 
1452         assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
 
1453         assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
 
1454         assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
 
1455         assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
 
1459     public void queryNorthBoundRequestCatalogDbTransportTest() throws MalformedURLException {
 
1460         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1461         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
1462         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1463         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
 
1464                 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
 
1466         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
 
1467                 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
 
1468         assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
 
1472     public void extractResourceIdAndTypeFromUriTest() {
 
1473         String uri = "/v6/serviceInstances/123";
 
1474         String uri2 = "/v6/serviceInstances/123/vnfs/1234";
 
1475         String uri3 = "/v6/serviceInstances";
 
1476         String uri4 = "/v6/serviceInstances/assign";
 
1477         String uri5 = "'/v6/serviceInstances/123/vnfs";
 
1478         String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
 
1479         String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
 
1480         String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
 
1481         Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
 
1482         Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
 
1483         Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
 
1484         Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
 
1485         Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
 
1486         assertEquals(expected1.getResourceId(), result.getResourceId());
 
1487         assertEquals(expected1.getResourceType(), result.getResourceType());
 
1488         result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
 
1489         assertEquals(expected2.getResourceId(), result.getResourceId());
 
1490         assertEquals(expected2.getResourceType(), result.getResourceType());
 
1491         result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
 
1492         assertEquals("Service", result.getResourceType().toString());
 
1493         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1494         result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
 
1495         assertEquals("Service", result.getResourceType().toString());
 
1496         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1497         result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
 
1498         assertEquals("Vnf", result.getResourceType().toString());
 
1499         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1500         result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
 
1501         assertEquals(expected3.getResourceId(), result.getResourceId());
 
1502         assertEquals(expected3.getResourceType(), result.getResourceType());
 
1503         result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
 
1504         assertEquals(expected4.getResourceId(), result.getResourceId());
 
1505         assertEquals(expected4.getResourceType(), result.getResourceType());
 
1506         result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
 
1507         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
1508         assertEquals("VfModule", result.getResourceType().toString());
 
1513     public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
 
1514         this.expectedException.expect(IllegalArgumentException.class);
 
1515         this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
 
1516         workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
 
1520     public void extractResourceIdAndTypeFromUriInvalidUriTest() {
 
1521         this.expectedException.expect(IllegalArgumentException.class);
 
1522         this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
 
1523         workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
 
1527     public void extractResourceIdAndTypeFromUriResumeTest() {
 
1528         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1529                 "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");
 
1530         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1534     public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
 
1535         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1536                 "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");
 
1537         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1541     public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
 
1542         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1543                 "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");
 
1544         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1548     public void extractResourceIdAndTypeFromUriResumeIdOnly() {
 
1549         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
1550                 "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");
 
1551         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
1555     public void isUriResumeTest() {
 
1556         assertTrue(workflowAction.isUriResume(
 
1557                 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
 
1558         assertTrue(workflowAction.isUriResume(
 
1559                 "        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"));
 
1561         assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
 
1565     public void isRequestMacroServiceResumeTest() {
 
1566         ServiceInstance si = new ServiceInstance();
 
1567         when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
 
1568         assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
 
1569         assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
 
1573     public void populateResourceIdsFromApiHandlerTest() {
 
1574         execution.setVariable("serviceInstanceId", "123");
 
1575         execution.setVariable("vnfId", "888");
 
1576         WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
 
1577         assertEquals("123", x.getServiceInstanceId());
 
1578         assertEquals("888", x.getVnfId());
 
1579         assertNull(x.getVolumeGroupId());
 
1582     private RequestDetails setupRequestDetails(String globalSubscriberId, String subscriptionServiceType,
 
1583             String modelCustomizationId) {
 
1584         RequestDetails reqDetails = new RequestDetails();
 
1585         SubscriberInfo subInfo = new SubscriberInfo();
 
1586         subInfo.setGlobalSubscriberId(globalSubscriberId);
 
1587         reqDetails.setSubscriberInfo(subInfo);
 
1588         RequestParameters reqParams = new RequestParameters();
 
1589         reqParams.setSubscriptionServiceType(subscriptionServiceType);
 
1590         reqDetails.setRequestParameters(reqParams);
 
1591         ModelInfo modelInfo = new ModelInfo();
 
1592         modelInfo.setModelCustomizationId(modelCustomizationId);
 
1593         reqDetails.setModelInfo(modelInfo);
 
1598     public void validateVnfResourceIdInAAITest() throws Exception {
 
1599         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1600         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1601         workflowResourceIds.setServiceInstanceId("siId123");
 
1603         GenericVnf vnf = new GenericVnf();
 
1604         vnf.setVnfId("id123");
 
1605         vnf.setVnfName("vnfName123");
 
1606         vnf.setModelCustomizationId("1234567");
 
1607         Optional<GenericVnf> opVnf = Optional.of(vnf);
 
1608         GenericVnf vnf2 = new GenericVnf();
 
1609         vnf2.setVnfId("id123");
 
1610         vnf2.setVnfName("vnfName222");
 
1611         vnf2.setModelCustomizationId("222");
 
1612         Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
 
1613         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
 
1614         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
 
1615         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
1616         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
 
1617                 workflowResourceIds);
 
1618         assertEquals("id123", id);
 
1619         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails,
 
1620                 workflowResourceIds);
 
1621         assertEquals("generatedId123", id2);
 
1623         this.expectedException.expect(DuplicateNameException.class);
 
1624         this.expectedException.expectMessage(containsString(
 
1625                 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
 
1626         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
 
1627                 workflowResourceIds);
 
1631     public void validateVnfResourceNameInAAITest() throws Exception {
 
1632         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1633         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1634         workflowResourceIds.setServiceInstanceId("siId123");
 
1637         GenericVnfs genericVnfs = new GenericVnfs();
 
1638         GenericVnf vnf3 = new GenericVnf();
 
1639         vnf3.setVnfId("id123");
 
1640         vnf3.setVnfName("vnfName333");
 
1641         genericVnfs.getGenericVnf().add(vnf3);
 
1642         when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName333")).thenReturn(Optional.empty());
 
1643         when(bbSetupUtils.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
 
1645         this.expectedException.expect(DuplicateNameException.class);
 
1646         this.expectedException.expectMessage(containsString(
 
1647                 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
 
1648         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
 
1649                 workflowResourceIds);
 
1653     public void validateNetworkResourceIdInAAITest() throws Exception {
 
1654         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1655         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1656         workflowResourceIds.setServiceInstanceId("siId123");
 
1659         L3Network network = new L3Network();
 
1660         network.setNetworkId("id123");
 
1661         network.setNetworkName("name123");
 
1662         network.setModelCustomizationId("1234567");
 
1663         workflowResourceIds.setServiceInstanceId("siId123");
 
1664         Optional<L3Network> opNetwork = Optional.of(network);
 
1665         L3Network network2 = new L3Network();
 
1666         network2.setNetworkId("id123");
 
1667         network2.setNetworkName("networkName222");
 
1668         network2.setModelCustomizationId("222");
 
1669         Optional<L3Network> opNetwork2 = Optional.of(network2);
 
1670         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "name123")).thenReturn(opNetwork);
 
1671         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
 
1672                 .thenReturn(opNetwork2);
 
1673         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123", "111111")).thenReturn(Optional.empty());
 
1674         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123",
 
1675                 reqDetails, workflowResourceIds);
 
1676         assertEquals("id123", id);
 
1677         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111",
 
1678                 reqDetails, workflowResourceIds);
 
1679         assertEquals("generatedId123", id2);
 
1681         this.expectedException.expect(DuplicateNameException.class);
 
1682         this.expectedException.expectMessage(containsString(
 
1683                 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
 
1684         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
 
1685                 workflowResourceIds);
 
1689     public void validateNetworkResourceNameExistsInAAITest() throws Exception {
 
1690         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1691         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1692         workflowResourceIds.setServiceInstanceId("siId123");
 
1695         L3Network network = new L3Network();
 
1696         network.setNetworkId("id123");
 
1697         network.setNetworkName("name123");
 
1698         network.setModelCustomizationId("1234567");
 
1699         workflowResourceIds.setServiceInstanceId("siId123");
 
1701         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
 
1702                 .thenReturn(Optional.empty());
 
1703         when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
 
1705         this.expectedException.expect(DuplicateNameException.class);
 
1706         this.expectedException.expectMessage(containsString(
 
1707                 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
 
1708         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
 
1709                 workflowResourceIds);
 
1713     public void validateVfModuleResourceIdInAAITest() throws Exception {
 
1714         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1715         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1716         workflowResourceIds.setServiceInstanceId("siId123");
 
1718         GenericVnf vnf = new GenericVnf();
 
1719         vnf.setVnfId("id123");
 
1720         vnf.setVnfName("vnfName123");
 
1721         vnf.setModelCustomizationId("222");
 
1724         VfModules vfModules = new VfModules();
 
1725         VfModule vfModule = new VfModule();
 
1726         vfModule.setVfModuleId("id123");
 
1727         vfModule.setVfModuleName("name123");
 
1728         vfModule.setModelCustomizationId("1234567");
 
1729         vfModules.getVfModule().add(vfModule);
 
1730         vnf.setVfModules(vfModules);
 
1731         workflowResourceIds.setVnfId("id123");
 
1732         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
1733         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123",
 
1734                 reqDetails, workflowResourceIds);
 
1735         assertEquals("id123", id);
 
1737         GenericVnf vnf1 = new GenericVnf();
 
1738         VfModules vfModules2 = new VfModules();
 
1739         VfModule vfModule2 = new VfModule();
 
1740         vfModule2.setVfModuleId("id123");
 
1741         vfModule2.setVfModuleName("vFModName222");
 
1742         vfModule2.setModelCustomizationId("222");
 
1743         vfModules2.getVfModule().add(vfModule2);
 
1744         vnf1.setVfModules(vfModules2);
 
1745         workflowResourceIds.setVnfId("id111");
 
1746         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
1747         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111",
 
1748                 reqDetails, workflowResourceIds);
 
1749         assertEquals("generatedId123", id2);
 
1751         this.expectedException.expect(DuplicateNameException.class);
 
1752         this.expectedException.expectMessage(containsString(
 
1753                 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
 
1754         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
 
1755                 workflowResourceIds);
 
1759     public void validateVfModuleResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
1760         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1761         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1762         workflowResourceIds.setVnfId("id111");
 
1764         GenericVnf vnf1 = new GenericVnf();
 
1765         workflowResourceIds.setVnfId("id111");
 
1766         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
 
1768         when(bbSetupUtils.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
 
1769         this.expectedException.expect(DuplicateNameException.class);
 
1770         this.expectedException.expectMessage(
 
1771                 containsString("vfModule with name vFModName333 already exists. The name must be unique."));
 
1772         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
 
1773                 workflowResourceIds);
 
1777     public void validateVolumeGroupResourceIdInAAITest() throws Exception {
 
1778         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1779         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1780         workflowResourceIds.setServiceInstanceId("siId123");
 
1782         GenericVnf vnf = new GenericVnf();
 
1783         vnf.setVnfId("id123");
 
1784         vnf.setVnfName("vnfName123");
 
1785         vnf.setModelCustomizationId("1234567");
 
1787         GenericVnf vnf2 = new GenericVnf();
 
1788         vnf2.setVnfId("id123");
 
1789         vnf2.setVnfName("vnfName123");
 
1790         vnf2.setModelCustomizationId("222");
 
1793         VolumeGroup volumeGroup = new VolumeGroup();
 
1794         volumeGroup.setVolumeGroupId("id123");
 
1795         volumeGroup.setVolumeGroupName("name123");
 
1796         volumeGroup.setVfModuleModelCustomizationId("1234567");
 
1797         workflowResourceIds.setVnfId("id123");
 
1798         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
 
1800         workflowResourceIds.setVnfId("id123");
 
1802         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
1803         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
 
1804         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
 
1805                 reqDetails, workflowResourceIds);
 
1806         assertEquals("id123", id);
 
1808         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
 
1809         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
 
1810                 .thenReturn(opVolumeGroup);
 
1812         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "111111")).thenReturn(Optional.empty());
 
1813         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
 
1814                 reqDetails, workflowResourceIds);
 
1815         assertEquals("generatedId123", id2);
 
1819     public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
1820         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1821         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1822         workflowResourceIds.setVnfId("id123");
 
1823         GenericVnf vnf = new GenericVnf();
 
1824         vnf.setVnfId("id123");
 
1825         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
 
1826         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "testVolumeGroup")).thenReturn(Optional.empty());
 
1828         when(bbSetupUtils.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
 
1829         this.expectedException.expect(DuplicateNameException.class);
 
1830         this.expectedException.expectMessage(
 
1831                 containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
 
1832         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup",
 
1833                 reqDetails, workflowResourceIds);
 
1837     public void validateConfigurationResourceIdInAAITest() throws Exception {
 
1838         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1839         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1840         workflowResourceIds.setServiceInstanceId("siId123");
 
1843         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1844         configuration.setConfigurationId("id123");
 
1845         configuration.setConfigurationName("name123");
 
1846         configuration.setModelCustomizationId("1234567");
 
1847         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
 
1849         org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
 
1850         configuration2.setConfigurationId("id123");
 
1851         configuration2.setConfigurationName("name123");
 
1852         configuration2.setModelCustomizationId("222");
 
1853         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
 
1855         workflowResourceIds.setVnfId("id123");
 
1857         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
 
1858                 .thenReturn(opConfiguration);
 
1859         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
 
1860                 reqDetails, workflowResourceIds);
 
1861         assertEquals("id123", id);
 
1863         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "111111"))
 
1864                 .thenReturn(Optional.empty());
 
1865         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
 
1866                 reqDetails, workflowResourceIds);
 
1867         assertEquals("generatedId123", id2);
 
1869         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
 
1870                 .thenReturn(opConfiguration2);
 
1871         this.expectedException.expect(DuplicateNameException.class);
 
1872         this.expectedException.expectMessage(containsString(
 
1873                 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
 
1874         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
 
1875                 workflowResourceIds);
 
1879     public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
 
1880         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1881         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1882         workflowResourceIds.setServiceInstanceId("siId123");
 
1884         when(bbSetupUtils.getRelatedConfigurationByNameFromServiceInstance("siId123", "testConfig"))
 
1885                 .thenReturn(Optional.empty());
 
1886         when(bbSetupUtils.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
 
1887         this.expectedException.expect(DuplicateNameException.class);
 
1888         this.expectedException.expectMessage(
 
1889                 containsString("configuration with name testConfig already exists. The name must be unique."));
 
1890         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
 
1891                 workflowResourceIds);
 
1895     public void validateServiceInstanceResourceIdInAAITest() throws Exception {
 
1896         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1897         workflowResourceIds.setServiceInstanceId("siId123");
 
1898         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1899         reqDetails.getModelInfo().setModelVersionId("1234567");
 
1901         ServiceInstance si = new ServiceInstance();
 
1902         si.setServiceInstanceId("siId123");
 
1903         si.setModelVersionId("1234567");
 
1904         ServiceInstances serviceInstances = new ServiceInstances();
 
1905         serviceInstances.getServiceInstance().add(si);
 
1906         Optional<ServiceInstance> siOp = Optional.of(si);
 
1907         ServiceInstance si2 = new ServiceInstance();
 
1908         si2.setServiceInstanceId("siId222");
 
1909         si2.setModelVersionId("22222");
 
1910         si2.setServiceInstanceName("siName222");
 
1911         Optional<ServiceInstance> siOp2 = Optional.of(si2);
 
1912         ServiceInstances serviceInstances2 = new ServiceInstances();
 
1913         serviceInstances2.getServiceInstance().add(si2);
 
1915         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
 
1916         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222")).thenReturn(siOp2);
 
1917         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111"))
 
1918                 .thenReturn(Optional.empty());
 
1920         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
1921         String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
 
1922                 reqDetails, workflowResourceIds);
 
1923         assertEquals("siId123", id);
 
1924         String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111",
 
1925                 reqDetails, workflowResourceIds);
 
1926         assertEquals("generatedId123", id2);
 
1928         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName222")).thenReturn(serviceInstances2);
 
1929         this.expectedException.expect(DuplicateNameException.class);
 
1930         this.expectedException.expectMessage(containsString(
 
1931                 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
 
1932         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
 
1933                 workflowResourceIds);
 
1937     public void validateServiceInstanceResourceIdInAAIMultipleTest() throws Exception {
 
1938         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1939         workflowResourceIds.setServiceInstanceId("siId123");
 
1940         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1941         reqDetails.getModelInfo().setModelVersionId("1234567");
 
1943         ServiceInstance si = new ServiceInstance();
 
1944         si.setServiceInstanceId("siId123");
 
1945         si.setModelVersionId("1234567");
 
1946         ServiceInstances serviceInstances = new ServiceInstances();
 
1947         serviceInstances.getServiceInstance().add(si);
 
1949         ServiceInstance si2 = new ServiceInstance();
 
1950         si2.setServiceInstanceId("siId222");
 
1951         si2.setModelVersionId("22222");
 
1952         si2.setServiceInstanceName("siName222");
 
1953         serviceInstances.getServiceInstance().add(si2);
 
1955         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
1956                 .thenReturn(Optional.empty());
 
1958         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
1960         this.expectedException.expect(DuplicateNameException.class);
 
1961         this.expectedException.expectMessage(containsString(
 
1962                 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
 
1963         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
1964                 workflowResourceIds);
 
1968     public void validateServiceInstanceResourceIdInAAIExistsTest() throws Exception {
 
1969         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
 
1970         workflowResourceIds.setServiceInstanceId("siId123");
 
1971         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
 
1972         reqDetails.getModelInfo().setModelVersionId("1234567");
 
1974         ServiceInstance si = new ServiceInstance();
 
1975         si.setServiceInstanceId("siId123");
 
1976         si.setModelVersionId("1234567");
 
1977         ServiceInstances serviceInstances = new ServiceInstances();
 
1978         serviceInstances.getServiceInstance().add(si);
 
1980         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
 
1981                 .thenReturn(Optional.empty());
 
1983         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
 
1985         Map<String, String> uriKeys = new HashMap<>();
 
1986         uriKeys.put("global-customer-id", "globalCustomerId");
 
1987         uriKeys.put("service-type", "serviceType");
 
1989         when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
 
1991         this.expectedException.expect(DuplicateNameException.class);
 
1992         this.expectedException.expectMessage(containsString(
 
1993                 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
 
1994         workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
 
1995                 workflowResourceIds);
 
1999     public void handleRuntimeExceptionTest() {
 
2000         execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
 
2001         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2003             workflowAction.handleRuntimeException(execution);
 
2004         } catch (BpmnError wfe) {
 
2005             assertEquals("MSOWorkflowException", wfe.getErrorCode());
 
2011     public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException, VrfBondingServiceException {
 
2012         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2013         Service service = new Service();
 
2014         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
2015         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
2016         networkCust.setModelCustomizationUUID("123");
 
2017         networkCustomizations.add(networkCust);
 
2018         service.setNetworkCustomizations(networkCustomizations);
 
2019         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
2020                 new NetworkCollectionResourceCustomization();
 
2021         collectionResourceCustomization.setModelCustomizationUUID("123");
 
2022         CollectionResource collectionResource = new CollectionResource();
 
2023         collectionResource.setToscaNodeType("NetworkCollection");
 
2024         InstanceGroup instanceGroup = new InstanceGroup();
 
2025         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
2026         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
2027                 new CollectionResourceInstanceGroupCustomization();
 
2028         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
2029         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
2030         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
2031         collectionResource.setInstanceGroup(instanceGroup);
 
2032         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
2033         service.setModelUUID("abc");
 
2034         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2035         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
2036         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
2037         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
2038                 .getNetworkCollectionResourceCustomizationByID("123");
 
2039         String bpmnRequest = new String(Files
 
2040                 .readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
 
2041         ObjectMapper mapper = new ObjectMapper();
 
2042         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
2043         List<Resource> resourceCounter = new ArrayList<>();
 
2044         thrown.expect(BpmnError.class);
 
2045         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
2046         workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
 
2050     public void sortVfModulesByBaseFirstTest() {
 
2051         List<Resource> resources = new ArrayList<>();
 
2052         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2053         resource1.setBaseVfModule(false);
 
2054         resources.add(resource1);
 
2055         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2056         resource2.setBaseVfModule(false);
 
2057         resources.add(resource2);
 
2058         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2059         resource3.setBaseVfModule(true);
 
2060         resources.add(resource3);
 
2061         List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
 
2062         assertEquals("333", result.get(0).getResourceId());
 
2063         assertEquals("222", result.get(1).getResourceId());
 
2064         assertEquals("111", result.get(2).getResourceId());
 
2068     public void sortVfModulesByBaseLastTest() {
 
2069         List<Resource> resources = new ArrayList<>();
 
2070         Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
 
2071         resource1.setBaseVfModule(true);
 
2072         resources.add(resource1);
 
2073         Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
 
2074         resource2.setBaseVfModule(false);
 
2075         resources.add(resource2);
 
2076         Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
 
2077         resource3.setBaseVfModule(false);
 
2078         resources.add(resource3);
 
2079         List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
 
2080         assertEquals("333", result.get(0).getResourceId());
 
2081         assertEquals("222", result.get(1).getResourceId());
 
2082         assertEquals("111", result.get(2).getResourceId());
 
2086     public void findCatalogNetworkCollectionTest() {
 
2087         Service service = new Service();
 
2088         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
2089         networkCustomization.setModelCustomizationUUID("123");
 
2090         service.getCollectionResourceCustomizations().add(networkCustomization);
 
2091         doReturn(networkCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
2092         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
2093         assertNotNull(customization);
 
2097     public void findCatalogNetworkCollectionEmptyTest() {
 
2098         Service service = new Service();
 
2099         NetworkCollectionResourceCustomization networkCustomization = new NetworkCollectionResourceCustomization();
 
2100         networkCustomization.setModelCustomizationUUID("123");
 
2101         service.getCollectionResourceCustomizations().add(networkCustomization);
 
2102         CollectionResourceCustomization customization = workflowAction.findCatalogNetworkCollection(execution, service);
 
2103         assertNull(customization);
 
2107     public void findCatalogNetworkCollectionMoreThanOneTest() {
 
2108         Service service = new Service();
 
2109         NetworkCollectionResourceCustomization networkCustomization1 = new NetworkCollectionResourceCustomization();
 
2110         networkCustomization1.setModelCustomizationUUID("123");
 
2111         NetworkCollectionResourceCustomization networkCustomization2 = new NetworkCollectionResourceCustomization();
 
2112         networkCustomization2.setModelCustomizationUUID("321");
 
2113         service.getCollectionResourceCustomizations().add(networkCustomization1);
 
2114         service.getCollectionResourceCustomizations().add(networkCustomization2);
 
2115         doReturn(networkCustomization1).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
 
2116         doReturn(networkCustomization2).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("321");
 
2117         workflowAction.findCatalogNetworkCollection(execution, service);
 
2118         assertEquals("Found multiple Network Collections in the Service model, only one per Service is supported.",
 
2119                 execution.getVariable("WorkflowActionErrorMessage"));
 
2123     public void verifyLackOfNullPointerExceptionForNullResource() {
 
2124         ExecuteBuildingBlock result = null;
 
2126             result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
 
2127                     false, null, null, null, false, null, true);
 
2128         } catch (NullPointerException e) {
 
2129             fail("NullPointerException should not be thrown when 'resource' is null");
 
2131         assertNotNull(result);
 
2135     public void traverseAAIServiceTest() {
 
2136         List<Resource> resourceCounter = new ArrayList<>();
 
2137         String resourceId = "si0";
 
2138         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
2140         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
2141         serviceInstanceAAI.setServiceInstanceId(resourceId);
 
2143         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
 
2151         Configuration config = new Configuration();
 
2152         config.setConfigurationId("testConfigurationId2");
 
2153         serviceInstance.getConfigurations().add(config);
 
2155         Relationship relationship1 = new Relationship();
 
2156         relationship1.setRelatedTo("vnfc");
 
2157         RelationshipList relationshipList1 = new RelationshipList();
 
2158         relationshipList1.getRelationship().add(relationship1);
 
2160         Relationship relationship2 = new Relationship();
 
2161         relationship2.setRelatedTo("vpn-binding");
 
2162         RelationshipList relationshipList2 = new RelationshipList();
 
2163         relationshipList2.getRelationship().add(relationship2);
 
2165         org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
 
2166         aaiConfiguration1.setConfigurationId("testConfigurationId");
 
2167         aaiConfiguration1.setRelationshipList(relationshipList1);
 
2169         org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
 
2170         aaiConfiguration2.setConfigurationId("testConfigurationId2");
 
2171         aaiConfiguration2.setRelationshipList(relationshipList1);
 
2174             doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
 
2175             doReturn(serviceInstance).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
2176             doReturn(Optional.of(aaiConfiguration1)).when(aaiConfigurationResources)
 
2177                     .getConfiguration("testConfigurationId");
 
2178             doReturn(Optional.of(aaiConfiguration2)).when(aaiConfigurationResources)
 
2179                     .getConfiguration("testConfigurationId2");
 
2180             workflowAction.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
 
2181             assertEquals(8, resourceCounter.size());
 
2182             assertTrue(resourceCounter.get(2).isBaseVfModule());
 
2183             assertThat(aaiResourceIds, sameBeanAs(getExpectedResourceIds()));
 
2184         } catch (Exception e) {
 
2185             fail("Unexpected exception was thrown.");
 
2189     private List<Pair<WorkflowType, String>> getExpectedResourceIds() {
 
2190         List<Pair<WorkflowType, String>> resourceIds = new ArrayList<>();
 
2191         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, "testVnfId1"));
 
2192         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE, "testVfModuleId1"));
 
2193         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP, "testVolumeGroupId1"));
 
2194         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, "testNetworkId1"));
 
2195         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION, "testId"));
 
2196         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId"));
 
2197         resourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, "testConfigurationId2"));
 
2201     private List<OrchestrationFlow> createFlowList(String... flowNames) {
 
2202         List<OrchestrationFlow> result = new ArrayList<>();
 
2203         for (String flowName : flowNames) {
 
2204             OrchestrationFlow orchFlow = new OrchestrationFlow();
 
2205             orchFlow.setFlowName(flowName);
 
2206             result.add(orchFlow);
 
2211     private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
 
2212         for (int i = 0; i < ebbs.size(); i++) {
 
2213             assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);