80909851e3c792187bebe71d2828afde6759e735
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
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=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
24
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;
49 import java.util.Map;
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;
109
110 public class WorkflowActionTest extends BaseTaskTest {
111
112
113     @Mock
114     protected Environment environment;
115     @InjectMocks
116     protected WorkflowAction workflowAction;
117     private DelegateExecution execution;
118
119     @InjectMocks
120     @Spy
121     protected WorkflowAction SPY_workflowAction;
122
123     @Rule
124     public ExpectedException thrown = ExpectedException.none();
125
126     private String RESOURCE_PATH = "src/test/resources/__files/";
127
128     @Before
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);
136     }
137
138     /**
139      * ALACARTE TESTS
140      */
141     @Test
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);
147         String bpmnRequest =
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");
153
154         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
155         List<OrchestrationFlow> orchFlows =
156                 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
157         northBoundRequest.setOrchestrationFlowList(orchFlows);
158
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");
164     }
165
166     @Test
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);
172         String bpmnRequest =
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");
178
179         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
180         List<OrchestrationFlow> orchFlows =
181                 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
182         northBoundRequest.setOrchestrationFlowList(orchFlows);
183
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");
189     }
190
191     @Test
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);
197         String bpmnRequest =
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");
203
204
205         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
206         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
207         northBoundRequest.setOrchestrationFlowList(orchFlows);
208
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");
214     }
215
216     /**
217      * SERVICE MACRO TESTS
218      */
219     @Test
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);
225         String bpmnRequest =
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");
231
232
233         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
234         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
235                 "AssignVolumeGroupBB", "AssignVfModuleBB");
236         northBoundRequest.setOrchestrationFlowList(orchFlows);
237
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);
246
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);
255
256         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
257         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
258
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");
271     }
272
273     @Test
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");
285
286
287         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
288         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
289                 "AssignVolumeGroupBB", "AssignVfModuleBB");
290         northBoundRequest.setOrchestrationFlowList(orchFlows);
291
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);
300
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);
309
310         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
311         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
312
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");
326     }
327
328     @Test
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");
340
341
342         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
343         List<OrchestrationFlow> orchFlows =
344                 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
345                         "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
346         northBoundRequest.setOrchestrationFlowList(orchFlows);
347
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");
355
356
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);
361
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);
366
367         serviceInstanceMSO.getVnfs().add(vnf);
368
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());
386
387     }
388
389     @Test
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");
401
402
403         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
404         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
405         northBoundRequest.setOrchestrationFlowList(orchFlows);
406
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");
412     }
413
414     @Test
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");
426
427
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);
436
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");
444     }
445
446     @Test
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");
458
459
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);
468
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");
480     }
481
482     @Test
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");
494
495
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);
504
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");
514
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()
553                         .getNetworkId()
554                         && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
555                                 .getNetworkId(),
556                 true);
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()
562                         .getNetworkId()
563                         && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
564                                 .getNetworkId(),
565                 true);
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()
571                         .getNetworkId()
572                         && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
573                                 .getNetworkId(),
574                 true);
575     }
576
577     @Test
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);
583         String bpmnRequest =
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");
589
590
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);
598
599         Service service = new Service();
600         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
601
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);
610
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);
619
620         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
621         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
622
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"));
657     }
658
659     @Test
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");
671
672
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);
679
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");
687
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);
692
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);
697
698         serviceInstanceMSO.getVnfs().add(vnf);
699
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");
710     }
711
712     @Test
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");
724
725
726         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
727         List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
728                 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
729         northBoundRequest.setOrchestrationFlowList(orchFlows);
730
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");
738
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);
743
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);
748
749         serviceInstanceMSO.getVnfs().add(vnf);
750
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");
759     }
760
761     @Test
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");
773
774
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);
781
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();
786
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);
795
796         Collection collection = new Collection();
797         serviceInstanceMSO.setCollection(collection);
798
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");
808     }
809
810     @Test
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);
816         String bpmnRequest =
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");
824
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);
832
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");
840
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);
849
850         serviceInstanceMSO.getVnfs().add(vnf);
851
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");
862     }
863
864     @Test
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);
870         String bpmnRequest =
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");
878
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);
887
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);
915
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());
933         }
934     }
935
936     @Ignore
937     @Test
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");
949
950
951         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
952         List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
953                 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
954         northBoundRequest.setOrchestrationFlowList(orchFlows);
955
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);
962
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");
971     }
972
973     @Ignore
974     @Test
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");
986
987         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
988         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
989                 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
990         northBoundRequest.setOrchestrationFlowList(orchFlows);
991
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);
998
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");
1007     }
1008
1009     @Test
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");
1022
1023
1024         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1025         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1026                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1027         northBoundRequest.setOrchestrationFlowList(orchFlows);
1028
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");
1034     }
1035
1036     @Test
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");
1049
1050         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1051         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
1052                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
1053         northBoundRequest.setOrchestrationFlowList(orchFlows);
1054
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);
1069
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);
1083
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");
1093     }
1094
1095     @Test
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");
1108
1109         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1110         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1111                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1112         northBoundRequest.setOrchestrationFlowList(orchFlows);
1113
1114         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1115                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1116
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);
1121
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);
1125
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");
1130         vnfcs.add(vnfc);
1131         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1132                 anyObject());
1133
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(),
1142                 anyObject());
1143
1144         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1145
1146         SPY_workflowAction.selectExecutionList(execution);
1147         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1148         assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
1149                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1150     }
1151
1152     @Test
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);
1177
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"));
1181
1182         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1183                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1184
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);
1189
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);
1194
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);
1198
1199         SPY_workflowAction.getConfigBuildingBlocks(dataObj);
1200     }
1201
1202     @Test
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");
1215
1216         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1217         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
1218                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
1219         northBoundRequest.setOrchestrationFlowList(orchFlows);
1220
1221         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
1222                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
1223
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);
1228
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);
1232
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");
1237         vnfcs.add(vnfc);
1238         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
1239                 anyObject());
1240
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(),
1245                 anyObject());
1246
1247         doReturn("testName").when(SPY_workflowAction).getVnfcNameForConfiguration(anyObject());
1248
1249         SPY_workflowAction.selectExecutionList(execution);
1250         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1251         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
1252     }
1253
1254     @Test
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");
1266
1267         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1268         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
1269         northBoundRequest.setOrchestrationFlowList(orchFlows);
1270
1271         Service service = new Service();
1272         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1273
1274         ServiceInstance si = new ServiceInstance();
1275
1276         when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
1277         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1278
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;
1283         try {
1284             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
1285             flowsToExecute = Arrays.asList(asArray);
1286         } catch (Exception e) {
1287             e.printStackTrace();
1288         }
1289
1290         when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
1291
1292         workflowAction.selectExecutionList(execution);
1293         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1294         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
1295     }
1296
1297     @Test
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");
1302
1303         String vfncPayload =
1304                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
1305         AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
1306
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);
1312
1313         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName());
1314         when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
1315
1316         doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
1317                 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());
1322     }
1323
1324     /**
1325      * WorkflowActionBB Tests
1326      */
1327
1328     @Test
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));
1337         });
1338     }
1339
1340     @Test
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");
1346         bb.setKey("0");
1347         ebb.setBuildingBlock(bb);
1348         executeFlows.add(ebb);
1349         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1350         BuildingBlock bb2 = new BuildingBlock();
1351         bb2.setBpmnFlowName("AssignNetworkBB");
1352         bb2.setKey("1");
1353         ebb2.setBuildingBlock(bb2);
1354         executeFlows.add(ebb2);
1355         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1356         BuildingBlock bb3 = new BuildingBlock();
1357         bb3.setBpmnFlowName("CreateNetworkBB");
1358         bb3.setKey("0");
1359         ebb3.setBuildingBlock(bb3);
1360         executeFlows.add(ebb3);
1361         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1362         BuildingBlock bb4 = new BuildingBlock();
1363         bb4.setBpmnFlowName("CreateNetworkBB");
1364         bb4.setKey("1");
1365         ebb4.setBuildingBlock(bb4);
1366         executeFlows.add(ebb4);
1367         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1368         BuildingBlock bb5 = new BuildingBlock();
1369         bb5.setBpmnFlowName("ActivateNetworkBB");
1370         bb5.setKey("0");
1371         ebb5.setBuildingBlock(bb5);
1372         executeFlows.add(ebb5);
1373         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1374         BuildingBlock bb6 = new BuildingBlock();
1375         bb6.setBpmnFlowName("ActivateNetworkBB");
1376         bb6.setKey("1");
1377         ebb6.setBuildingBlock(bb6);
1378         executeFlows.add(ebb6);
1379
1380         List<ExecuteBuildingBlock> sorted =
1381                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
1382         assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
1383                 "CreateNetworkBB", "ActivateNetworkBB");
1384     }
1385
1386     @Test
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");
1392         bb.setKey("0");
1393         ebb.setBuildingBlock(bb);
1394         executeFlows.add(ebb);
1395         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1396         BuildingBlock bb2 = new BuildingBlock();
1397         bb2.setBpmnFlowName("DeactivateNetworkBB");
1398         bb2.setKey("1");
1399         ebb2.setBuildingBlock(bb2);
1400         executeFlows.add(ebb2);
1401         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1402         BuildingBlock bb3 = new BuildingBlock();
1403         bb3.setBpmnFlowName("DeleteNetworkBB");
1404         bb3.setKey("0");
1405         ebb3.setBuildingBlock(bb3);
1406         executeFlows.add(ebb3);
1407         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1408         BuildingBlock bb4 = new BuildingBlock();
1409         bb4.setBpmnFlowName("DeleteNetworkBB");
1410         bb4.setKey("1");
1411         ebb4.setBuildingBlock(bb4);
1412         executeFlows.add(ebb4);
1413         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1414         BuildingBlock bb5 = new BuildingBlock();
1415         bb5.setBpmnFlowName("UnassignNetworkBB");
1416         bb5.setKey("0");
1417         ebb5.setBuildingBlock(bb5);
1418         executeFlows.add(ebb5);
1419         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1420         BuildingBlock bb6 = new BuildingBlock();
1421         bb6.setBpmnFlowName("UnassignNetworkBB");
1422         bb6.setKey("1");
1423         ebb6.setBuildingBlock(bb6);
1424         executeFlows.add(ebb6);
1425
1426         List<ExecuteBuildingBlock> sorted =
1427                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
1428         assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
1429                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
1430     }
1431
1432     @Test
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");
1440
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");
1456     }
1457
1458     @Test
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);
1465
1466         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
1467                 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
1468         assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
1469     }
1470
1471     @Test
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());
1509
1510     }
1511
1512     @Test
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");
1517     }
1518
1519     @Test
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");
1524     }
1525
1526     @Test
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");
1531     }
1532
1533     @Test
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");
1538     }
1539
1540     @Test
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");
1545     }
1546
1547     @Test
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");
1552     }
1553
1554     @Test
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"));
1560
1561         assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
1562     }
1563
1564     @Test
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"));
1570     }
1571
1572     @Test
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());
1580     }
1581
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);
1594         return reqDetails;
1595     }
1596
1597     @Test
1598     public void validateVnfResourceIdInAAITest() throws Exception {
1599         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1600         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1601         workflowResourceIds.setServiceInstanceId("siId123");
1602         // Vnf
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);
1622
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);
1628     }
1629
1630     @Test
1631     public void validateVnfResourceNameInAAITest() throws Exception {
1632         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1633         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1634         workflowResourceIds.setServiceInstanceId("siId123");
1635
1636         // Vnf
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);
1644
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);
1650     }
1651
1652     @Test
1653     public void validateNetworkResourceIdInAAITest() throws Exception {
1654         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1655         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1656         workflowResourceIds.setServiceInstanceId("siId123");
1657
1658         // Network
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);
1680
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);
1686     }
1687
1688     @Test
1689     public void validateNetworkResourceNameExistsInAAITest() throws Exception {
1690         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1691         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1692         workflowResourceIds.setServiceInstanceId("siId123");
1693
1694         // Network
1695         L3Network network = new L3Network();
1696         network.setNetworkId("id123");
1697         network.setNetworkName("name123");
1698         network.setModelCustomizationId("1234567");
1699         workflowResourceIds.setServiceInstanceId("siId123");
1700
1701         when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("networkName333", "111111"))
1702                 .thenReturn(Optional.empty());
1703         when(bbSetupUtils.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
1704
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);
1710     }
1711
1712     @Test
1713     public void validateVfModuleResourceIdInAAITest() throws Exception {
1714         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1715         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1716         workflowResourceIds.setServiceInstanceId("siId123");
1717
1718         GenericVnf vnf = new GenericVnf();
1719         vnf.setVnfId("id123");
1720         vnf.setVnfName("vnfName123");
1721         vnf.setModelCustomizationId("222");
1722
1723         // VfModule
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);
1736
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);
1750
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);
1756     }
1757
1758     @Test
1759     public void validateVfModuleResourceIdInAAINotGloballyUniqueTest() throws Exception {
1760         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1761         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1762         workflowResourceIds.setVnfId("id111");
1763
1764         GenericVnf vnf1 = new GenericVnf();
1765         workflowResourceIds.setVnfId("id111");
1766         when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf1);
1767
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);
1774     }
1775
1776     @Test
1777     public void validateVolumeGroupResourceIdInAAITest() throws Exception {
1778         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1779         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1780         workflowResourceIds.setServiceInstanceId("siId123");
1781
1782         GenericVnf vnf = new GenericVnf();
1783         vnf.setVnfId("id123");
1784         vnf.setVnfName("vnfName123");
1785         vnf.setModelCustomizationId("1234567");
1786
1787         GenericVnf vnf2 = new GenericVnf();
1788         vnf2.setVnfId("id123");
1789         vnf2.setVnfName("vnfName123");
1790         vnf2.setModelCustomizationId("222");
1791
1792         // VolumeGroup
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);
1799
1800         workflowResourceIds.setVnfId("id123");
1801
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);
1807
1808         when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf2);
1809         when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "111111"))
1810                 .thenReturn(opVolumeGroup);
1811
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);
1816     }
1817
1818     @Test
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());
1827
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);
1834     }
1835
1836     @Test
1837     public void validateConfigurationResourceIdInAAITest() throws Exception {
1838         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1839         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1840         workflowResourceIds.setServiceInstanceId("siId123");
1841
1842         // Configuration
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);
1848
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);
1854
1855         workflowResourceIds.setVnfId("id123");
1856
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);
1862
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);
1868
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);
1876     }
1877
1878     @Test
1879     public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
1880         RequestDetails reqDetails = setupRequestDetails("id123", "subServiceType123", "1234567");
1881         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1882         workflowResourceIds.setServiceInstanceId("siId123");
1883
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);
1892     }
1893
1894     @Test
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");
1900
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);
1914
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());
1919
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);
1927
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);
1934     }
1935
1936     @Test
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");
1942
1943         ServiceInstance si = new ServiceInstance();
1944         si.setServiceInstanceId("siId123");
1945         si.setModelVersionId("1234567");
1946         ServiceInstances serviceInstances = new ServiceInstances();
1947         serviceInstances.getServiceInstance().add(si);
1948
1949         ServiceInstance si2 = new ServiceInstance();
1950         si2.setServiceInstanceId("siId222");
1951         si2.setModelVersionId("22222");
1952         si2.setServiceInstanceName("siName222");
1953         serviceInstances.getServiceInstance().add(si2);
1954
1955         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1956                 .thenReturn(Optional.empty());
1957
1958         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1959
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);
1965     }
1966
1967     @Test
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");
1973
1974         ServiceInstance si = new ServiceInstance();
1975         si.setServiceInstanceId("siId123");
1976         si.setModelVersionId("1234567");
1977         ServiceInstances serviceInstances = new ServiceInstances();
1978         serviceInstances.getServiceInstance().add(si);
1979
1980         when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siId123"))
1981                 .thenReturn(Optional.empty());
1982
1983         when(bbSetupUtils.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
1984
1985         Map<String, String> uriKeys = new HashMap<>();
1986         uriKeys.put("global-customer-id", "globalCustomerId");
1987         uriKeys.put("service-type", "serviceType");
1988
1989         when(bbSetupUtils.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
1990
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);
1996     }
1997
1998     @Test
1999     public void handleRuntimeExceptionTest() {
2000         execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
2001         execution.setVariable("testProcessKey", "testProcessKeyValue");
2002         try {
2003             workflowAction.handleRuntimeException(execution);
2004         } catch (BpmnError wfe) {
2005             assertEquals("MSOWorkflowException", wfe.getErrorCode());
2006         }
2007     }
2008
2009     @Ignore
2010     @Test
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);
2047     }
2048
2049     @Test
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());
2065     }
2066
2067     @Test
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());
2083     }
2084
2085     @Test
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);
2094     }
2095
2096     @Test
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);
2104     }
2105
2106     @Test
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"));
2120     }
2121
2122     @Test
2123     public void verifyLackOfNullPointerExceptionForNullResource() {
2124         ExecuteBuildingBlock result = null;
2125         try {
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");
2130         }
2131         assertNotNull(result);
2132     }
2133
2134     @Test
2135     public void traverseAAIServiceTest() {
2136         List<Resource> resourceCounter = new ArrayList<>();
2137         String resourceId = "si0";
2138         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
2139
2140         ServiceInstance serviceInstanceAAI = new ServiceInstance();
2141         serviceInstanceAAI.setServiceInstanceId(resourceId);
2142
2143         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
2144         setGenericVnf();
2145         setVfModule(true);
2146         setVolumeGroup();
2147         setL3Network();
2148         setCollection();
2149         setConfiguration();
2150
2151         Configuration config = new Configuration();
2152         config.setConfigurationId("testConfigurationId2");
2153         serviceInstance.getConfigurations().add(config);
2154
2155         Relationship relationship1 = new Relationship();
2156         relationship1.setRelatedTo("vnfc");
2157         RelationshipList relationshipList1 = new RelationshipList();
2158         relationshipList1.getRelationship().add(relationship1);
2159
2160         Relationship relationship2 = new Relationship();
2161         relationship2.setRelatedTo("vpn-binding");
2162         RelationshipList relationshipList2 = new RelationshipList();
2163         relationshipList2.getRelationship().add(relationship2);
2164
2165         org.onap.aai.domain.yang.Configuration aaiConfiguration1 = new org.onap.aai.domain.yang.Configuration();
2166         aaiConfiguration1.setConfigurationId("testConfigurationId");
2167         aaiConfiguration1.setRelationshipList(relationshipList1);
2168
2169         org.onap.aai.domain.yang.Configuration aaiConfiguration2 = new org.onap.aai.domain.yang.Configuration();
2170         aaiConfiguration2.setConfigurationId("testConfigurationId2");
2171         aaiConfiguration2.setRelationshipList(relationshipList1);
2172
2173         try {
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.");
2186         }
2187     }
2188
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"));
2198         return resourceIds;
2199     }
2200
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);
2207         }
2208         return result;
2209     }
2210
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]);
2214         }
2215     }
2216 }