65d16adb40594cab0632dd4340a719e70217fa50
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / WorkflowActionTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.workflow.tasks;
22
23 import static org.hamcrest.CoreMatchers.containsString;
24 import static org.hamcrest.CoreMatchers.equalTo;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.assertThat;
28 import static org.mockito.Matchers.anyObject;
29 import static org.mockito.Matchers.anyString;
30 import static org.mockito.Mockito.doReturn;
31 import static org.mockito.Mockito.when;
32
33 import java.io.IOException;
34 import java.net.MalformedURLException;
35 import java.nio.file.Files;
36 import java.nio.file.Paths;
37 import java.util.ArrayList;
38 import java.util.Arrays;
39 import java.util.LinkedList;
40 import java.util.List;
41 import java.util.Optional;
42 import java.util.UUID;
43
44 import org.camunda.bpm.engine.delegate.BpmnError;
45 import org.camunda.bpm.engine.delegate.DelegateExecution;
46 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
47 import org.junit.Before;
48 import org.junit.Ignore;
49 import org.junit.Rule;
50 import org.junit.Test;
51 import org.junit.rules.ExpectedException;
52 import org.onap.aai.domain.yang.GenericVnf;
53 import org.onap.aai.domain.yang.L3Network;
54 import org.onap.aai.domain.yang.ServiceInstance;
55 import org.onap.aai.domain.yang.VfModule;
56 import org.onap.aai.domain.yang.VfModules;
57 import org.onap.aai.domain.yang.VolumeGroup;
58 import org.onap.so.bpmn.BaseTaskTest;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
60 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
61 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
62 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
63 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
64 import org.onap.so.db.catalog.beans.CollectionResource;
65 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
66 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
67 import org.onap.so.db.catalog.beans.HeatEnvironment;
68 import org.onap.so.db.catalog.beans.HeatTemplate;
69 import org.onap.so.db.catalog.beans.InstanceGroup;
70 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
71 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
72 import org.onap.so.db.catalog.beans.Service;
73 import org.onap.so.db.catalog.beans.VfModuleCustomization;
74 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
75 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
76 import org.onap.so.serviceinstancebeans.RequestDetails;
77 import org.onap.so.serviceinstancebeans.RequestParameters;
78 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
79 import org.onap.so.serviceinstancebeans.SubscriberInfo;
80 import org.springframework.beans.factory.annotation.Autowired;
81
82 import com.fasterxml.jackson.databind.ObjectMapper;
83
84 public class WorkflowActionTest extends BaseTaskTest {
85         @Autowired
86         protected WorkflowAction workflowAction;
87         
88         private DelegateExecution execution;
89         
90         @Rule
91         public ExpectedException thrown = ExpectedException.none();
92         
93         @Before
94         public void before() throws Exception {
95                 execution = new DelegateExecutionFake();
96                 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
97                 servInstance.setServiceInstanceId("TEST");
98                 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
99                 workflowAction.setBbInputSetupUtils(bbSetupUtils);
100                 workflowAction.setBbInputSetup(bbInputSetup);
101         }
102         /**
103          * ALACARTE TESTS
104          */
105         @Test
106         public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
107                 String gAction = "createInstance";
108                 String resource = "Network";
109                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
110                 execution.setVariable("requestAction", gAction);
111                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
112                 execution.setVariable("bpmnRequest", bpmnRequest);              
113                 execution.setVariable("aLaCarte", true);
114                 execution.setVariable("apiVersion", "7");
115                 execution.setVariable("requestUri", "v6/networks/123");
116                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
117                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
118                 northBoundRequest.setOrchestrationFlowList(orchFlows);
119                 OrchestrationFlow orch1 = new OrchestrationFlow();
120                 orch1.setFlowName("AssignNetwork1802BB");
121                 orchFlows.add(orch1);
122                 OrchestrationFlow orch2 = new OrchestrationFlow();
123                 orch2.setFlowName("CreateNetworkBB");
124                 orchFlows.add(orch2);
125                 OrchestrationFlow orch3 = new OrchestrationFlow();
126                 orch3.setFlowName("ActivateNetworkBB");
127                 orchFlows.add(orch3);
128
129                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
130         
131                 
132                 workflowAction.selectExecutionList(execution);
133                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
134                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignNetwork1802BB");
135                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
136                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
137         }
138         
139         @Test
140         public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
141                 String gAction = "deleteInstance";
142                 String resource = "Network";
143                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
144                 execution.setVariable("requestAction", gAction);
145                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
146                 execution.setVariable("bpmnRequest", bpmnRequest);              
147                 execution.setVariable("aLaCarte", true);
148                 execution.setVariable("apiVersion", "7");
149                 execution.setVariable("requestUri", "v6/networks/123");
150                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
151                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
152                 northBoundRequest.setOrchestrationFlowList(orchFlows);
153                 OrchestrationFlow orch1 = new OrchestrationFlow();
154                 orch1.setFlowName("DeactivateNetworkBB");
155                 orchFlows.add(orch1);
156                 OrchestrationFlow orch2 = new OrchestrationFlow();
157                 orch2.setFlowName("DeleteNetworkBB");
158                 orchFlows.add(orch2);
159                 OrchestrationFlow orch3 = new OrchestrationFlow();
160                 orch3.setFlowName("UnassignNetwork1802BB");
161                 orchFlows.add(orch3);
162                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
163                 workflowAction.selectExecutionList(execution);
164                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
165                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
166                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
167                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetwork1802BB");
168         }
169         
170         @Test
171         public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
172                 String gAction = "createInstance";
173                 String resource = "Service";
174                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
175                 execution.setVariable("requestAction", gAction);
176                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
177                 execution.setVariable("bpmnRequest", bpmnRequest);              
178                 execution.setVariable("aLaCarte", true);
179                 execution.setVariable("apiVersion", "7");
180                 execution.setVariable("requestUri", "v6/serviceInstances/123");
181                 
182                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
183                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
184                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
185                 OrchestrationFlow orch1 = new OrchestrationFlow();
186                 orch1.setFlowName("AssignServiceInstanceBB");
187                 orchFlows.add(orch1);
188                 OrchestrationFlow orch2 = new OrchestrationFlow();
189                 orch2.setFlowName("ActivateServiceInstanceBB");
190                 orchFlows.add(orch2);
191                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
192                 workflowAction.selectExecutionList(execution);
193                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
194                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
195                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
196         }
197         
198         /**
199          * SERVICE MACRO TESTS
200          */
201         @Test
202         public void selectExecutionListServiceMacroAssignTest() throws Exception{
203                 String gAction = "assignInstance";
204                 String resource = "Service";
205                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
206                 execution.setVariable("requestAction", gAction);
207                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
208                 execution.setVariable("bpmnRequest", bpmnRequest);
209                 execution.setVariable("aLaCarte", false);
210                 execution.setVariable("apiVersion", "7");
211                 execution.setVariable("requestUri", "v6/serviceInstances/123");
212                 
213                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
214                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
215                 northBoundRequest.setOrchestrationFlowList(orchFlows);
216                 OrchestrationFlow orch1 = new OrchestrationFlow();
217                 orch1.setFlowName("AssignServiceInstanceBB");
218                 orchFlows.add(orch1);
219                 OrchestrationFlow orch2 = new OrchestrationFlow();
220                 orch2.setFlowName("AssignNetworkBB");
221                 orchFlows.add(orch2);
222                 OrchestrationFlow orch3 = new OrchestrationFlow();
223                 orch3.setFlowName("AssignVnfBB");
224                 orchFlows.add(orch3);
225                 OrchestrationFlow orch4 = new OrchestrationFlow();
226                 orch4.setFlowName("AssignVolumeGroupBB");
227                 orchFlows.add(orch4);
228                 OrchestrationFlow orch5 = new OrchestrationFlow();
229                 orch5.setFlowName("AssignVfModuleBB");
230                 orchFlows.add(orch5);
231                 
232                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
233                 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
234                 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
235                 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
236                 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
237                 HeatTemplate volumeHeatTemplate = new HeatTemplate();
238                 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
239                 vfModuleCustomization.setVfModule(vfModule);
240                 
241                 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
242                 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
243                 HeatEnvironment heatEnvironment = new HeatEnvironment();
244                 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
245                 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
246                 HeatTemplate moduleHeatTemplate = new HeatTemplate();
247                 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
248                 vfModuleCustomization2.setVfModule(vfModule2);
249                 
250                 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
251                 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
252                 
253                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
254                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
255                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
256                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
257                 workflowAction.selectExecutionList(execution);
258                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
259                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
260                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignVnfBB");
261                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignVolumeGroupBB");
262                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
263                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
264                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
265         }
266         
267         @Test
268         public void selectExecutionListServiceMacroActivateTest() throws Exception{
269                 String gAction = "activateInstance";
270                 String resource = "Service";
271                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
272                 execution.setVariable("requestAction", gAction);
273                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
274                 execution.setVariable("bpmnRequest", bpmnRequest);              
275                 execution.setVariable("aLaCarte", false);
276                 execution.setVariable("apiVersion", "7");
277                 execution.setVariable("requestUri", "v6/serviceInstances/si0");
278
279                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
280                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
281                 northBoundRequest.setOrchestrationFlowList(orchFlows);  
282                 OrchestrationFlow orch1 = new OrchestrationFlow();
283                 orch1.setFlowName("CreateNetworkBB");
284                 orchFlows.add(orch1);
285                 OrchestrationFlow orch2 = new OrchestrationFlow();
286                 orch2.setFlowName("ActivateNetworkBB");
287                 orchFlows.add(orch2);
288                 OrchestrationFlow orch3 = new OrchestrationFlow();
289                 orch3.setFlowName("CreateVolumeGroupBB");
290                 orchFlows.add(orch3);
291                 OrchestrationFlow orch4 = new OrchestrationFlow();
292                 orch4.setFlowName("ActivateVolumeGroupBB");
293                 orchFlows.add(orch4);
294                 OrchestrationFlow orch5 = new OrchestrationFlow();
295                 orch5.setFlowName("CreateVfModuleBB");
296                 orchFlows.add(orch5);
297                 OrchestrationFlow orch6 = new OrchestrationFlow();
298                 orch6.setFlowName("ActivateVfModuleBB");
299                 orchFlows.add(orch6);
300                 OrchestrationFlow orch7 = new OrchestrationFlow();
301                 orch7.setFlowName("ActivateVnfBB");
302                 orchFlows.add(orch7);
303                 OrchestrationFlow orch8 = new OrchestrationFlow();
304                 orch8.setFlowName("ActivateServiceInstanceBB");
305                 orchFlows.add(orch8);
306                 
307                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
308                 serviceInstanceAAI.setServiceInstanceId("si0");
309                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
310                 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
311                 vnf.setVnfId("vnf0");
312                 
313                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
314                 vfModule.setVfModuleId("vfModule0");
315                 vnf.getVfModules().add(vfModule);
316                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
317                 vfModule2.setVfModuleId("vfModule1");
318                 vnf.getVfModules().add(vfModule2);
319                 
320                 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
321                 volumeGroup.setVolumeGroupId("volumeGroup0");
322                 vnf.getVolumeGroups().add(volumeGroup);
323                 
324                 serviceInstanceMSO.getVnfs().add(vnf);
325                 
326                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
327                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
328                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
329                 workflowAction.selectExecutionList(execution);
330                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
331                 assertEquals("CreateVolumeGroupBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
332                 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
333                 assertEquals("ActivateVolumeGroupBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());                
334                 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
335                 assertEquals("CreateVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
336                 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
337                 assertEquals("CreateVfModuleBB", ebbs.get(3).getBuildingBlock().getBpmnFlowName());
338                 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
339                 assertEquals("ActivateVfModuleBB", ebbs.get(4).getBuildingBlock().getBpmnFlowName());
340                 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
341                 assertEquals("ActivateVfModuleBB", ebbs.get(5).getBuildingBlock().getBpmnFlowName());   
342                 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
343                 assertEquals("ActivateVnfBB", ebbs.get(6).getBuildingBlock().getBpmnFlowName());
344                 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
345                 assertEquals("ActivateServiceInstanceBB", ebbs.get(7).getBuildingBlock().getBpmnFlowName());            
346                 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
347
348         }
349         
350         @Test
351         public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
352                 String gAction = "deactivateInstance";
353                 String resource = "Service";
354                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
355                 execution.setVariable("requestAction", gAction);
356                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
357                 execution.setVariable("bpmnRequest", bpmnRequest);              
358                 execution.setVariable("aLaCarte", false);
359                 execution.setVariable("apiVersion", "7");
360                 execution.setVariable("requestUri", "v6/serviceInstances/123");
361
362                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
363                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
364                 northBoundRequest.setOrchestrationFlowList(orchFlows);
365                 OrchestrationFlow orch = new OrchestrationFlow();
366                 orch.setFlowName("DeactivateServiceInstanceBB");
367                 orchFlows.add(orch);            
368                 
369                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
370                 workflowAction.selectExecutionList(execution);
371                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
372                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
373         }
374
375         @Test
376         public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
377                 String gAction = "createInstance";
378                 String resource = "Service";
379                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
380                 execution.setVariable("requestAction", gAction);
381                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
382                 execution.setVariable("bpmnRequest", bpmnRequest);                      
383                 execution.setVariable("aLaCarte", false);
384                 execution.setVariable("apiVersion", "7");
385                 execution.setVariable("requestUri", "v6/serviceInstances/123");
386                 
387                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
388                 northBoundRequest.setIsToplevelflow(true);
389                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
390                 northBoundRequest.setOrchestrationFlowList(orchFlows);                  
391                 OrchestrationFlow orch1 = new OrchestrationFlow();
392                 orch1.setFlowName("AssignServiceInstanceBB");
393                 orchFlows.add(orch1);
394                 OrchestrationFlow orch2 = new OrchestrationFlow();
395                 orch2.setFlowName("CreateNetworkCollectionBB");
396                 orchFlows.add(orch2);
397                 OrchestrationFlow orch3 = new OrchestrationFlow();
398                 orch3.setFlowName("AssignNetworkBB");
399                 orchFlows.add(orch3);
400                 OrchestrationFlow orch4 = new OrchestrationFlow();
401                 orch4.setFlowName("AssignVnfBB");
402                 orchFlows.add(orch4);
403                 OrchestrationFlow orch5 = new OrchestrationFlow();
404                 orch5.setFlowName("AssignVolumeGroupBB");
405                 orchFlows.add(orch5);
406                 OrchestrationFlow orch6 = new OrchestrationFlow();
407                 orch6.setFlowName("AssignVfModuleBB");
408                 orchFlows.add(orch6);
409                 OrchestrationFlow orch7 = new OrchestrationFlow();
410                 orch7.setFlowName("CreateNetworkBB");
411                 orchFlows.add(orch7);
412                 OrchestrationFlow orch8 = new OrchestrationFlow();
413                 orch8.setFlowName("ActivateNetworkBB");
414                 orchFlows.add(orch8);
415                 OrchestrationFlow orch9 = new OrchestrationFlow();
416                 orch9.setFlowName("CreateVolumeGroupBB");
417                 orchFlows.add(orch9);
418                 OrchestrationFlow orch10 = new OrchestrationFlow();
419                 orch10.setFlowName("ActivateVolumeGroupBB");
420                 orchFlows.add(orch10);
421                 OrchestrationFlow orch11 = new OrchestrationFlow();
422                 orch11.setFlowName("CreateVfModuleBB");
423                 orchFlows.add(orch11);
424                 OrchestrationFlow orch12 = new OrchestrationFlow();
425                 orch12.setFlowName("ActivateVfModuleBB");
426                 orchFlows.add(orch12);
427                 OrchestrationFlow orch13 = new OrchestrationFlow();
428                 orch13.setFlowName("AssignFabricConfigurationBB");
429                 orchFlows.add(orch13);
430                 OrchestrationFlow orch14 = new OrchestrationFlow();
431                 orch14.setFlowName("ActivateFabricConfigurationBB");
432                 orchFlows.add(orch14);
433                 OrchestrationFlow orch15 = new OrchestrationFlow();
434                 orch15.setFlowName("ActivateVnfBB");
435                 orchFlows.add(orch15);
436                 OrchestrationFlow orch16 = new OrchestrationFlow();
437                 orch16.setFlowName("ActivateNetworkCollectionBB");
438                 orchFlows.add(orch16);
439                 OrchestrationFlow orch17 = new OrchestrationFlow();
440                 orch17.setFlowName("ActivateServiceInstanceBB");
441                 orchFlows.add(orch17);
442                 
443                 Service service = new Service();
444                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
445                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
446                 workflowAction.selectExecutionList(execution);
447                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
448                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
449                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
450         }
451         
452         @Test
453         public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
454                 String gAction = "createInstance";
455                 String resource = "Service";
456                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
457                 execution.setVariable("requestAction", gAction);
458                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
459                 execution.setVariable("bpmnRequest", bpmnRequest);                      
460                 execution.setVariable("aLaCarte", false);
461                 execution.setVariable("apiVersion", "7");
462                 execution.setVariable("requestUri", "v6/serviceInstances/123");
463                 
464                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
465                 northBoundRequest.setIsToplevelflow(true);
466                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
467                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
468                 OrchestrationFlow orch1 = new OrchestrationFlow();
469                 orch1.setFlowName("AssignServiceInstanceBB");
470                 orchFlows.add(orch1);
471                 OrchestrationFlow orch2 = new OrchestrationFlow();
472                 orch2.setFlowName("CreateNetworkCollectionBB");
473                 orchFlows.add(orch2);
474                 OrchestrationFlow orch3 = new OrchestrationFlow();
475                 orch3.setFlowName("AssignNetworkBB");
476                 orchFlows.add(orch3);
477                 OrchestrationFlow orch4 = new OrchestrationFlow();
478                 orch4.setFlowName("AssignVnfBB");
479                 orchFlows.add(orch4);
480                 OrchestrationFlow orch5 = new OrchestrationFlow();
481                 orch5.setFlowName("AssignVolumeGroupBB");
482                 orchFlows.add(orch5);
483                 OrchestrationFlow orch6 = new OrchestrationFlow();
484                 orch6.setFlowName("AssignVfModuleBB");
485                 orchFlows.add(orch6);
486                 OrchestrationFlow orch7 = new OrchestrationFlow();
487                 orch7.setFlowName("CreateNetworkBB");
488                 orchFlows.add(orch7);
489                 OrchestrationFlow orch8 = new OrchestrationFlow();
490                 orch8.setFlowName("ActivateNetworkBB");
491                 orchFlows.add(orch8);
492                 OrchestrationFlow orch9 = new OrchestrationFlow();
493                 orch9.setFlowName("CreateVolumeGroupBB");
494                 orchFlows.add(orch9);
495                 OrchestrationFlow orch10 = new OrchestrationFlow();
496                 orch10.setFlowName("ActivateVolumeGroupBB");
497                 orchFlows.add(orch10);
498                 OrchestrationFlow orch11 = new OrchestrationFlow();
499                 orch11.setFlowName("CreateVfModuleBB");
500                 orchFlows.add(orch11);
501                 OrchestrationFlow orch12 = new OrchestrationFlow();
502                 orch12.setFlowName("ActivateVfModuleBB");
503                 orchFlows.add(orch12);
504                 OrchestrationFlow orch13 = new OrchestrationFlow();
505                 orch13.setFlowName("ActivateVnfBB");
506                 orchFlows.add(orch13);
507                 OrchestrationFlow orch14 = new OrchestrationFlow();
508                 orch14.setFlowName("ActivateNetworkCollectionBB");
509                 orchFlows.add(orch14);
510                 OrchestrationFlow orch15 = new OrchestrationFlow();
511                 orch15.setFlowName("ActivateServiceInstanceBB");
512                 orchFlows.add(orch15);
513                 
514                 Service service = new Service();
515                 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
516                 networkCustomization.setModelCustomizationUUID("1234");
517                 service.getNetworkCustomizations().add(networkCustomization);
518                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
519                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
520                 workflowAction.selectExecutionList(execution);
521                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
522                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
523                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
524                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
525                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
526                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
527         }
528         
529         @Test
530         public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
531                 String gAction = "createInstance";
532                 String resource = "Service";
533                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
534                 execution.setVariable("requestAction", gAction);
535                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
536                 execution.setVariable("bpmnRequest", bpmnRequest);                      
537                 execution.setVariable("aLaCarte", false);
538                 execution.setVariable("apiVersion", "7");
539                 execution.setVariable("requestUri", "v6/serviceInstances/123");
540                 
541                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
542                 northBoundRequest.setIsToplevelflow(true);
543                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
544                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
545                 OrchestrationFlow orch1 = new OrchestrationFlow();
546                 orch1.setFlowName("AssignServiceInstanceBB");
547                 orchFlows.add(orch1);
548                 OrchestrationFlow orch2 = new OrchestrationFlow();
549                 orch2.setFlowName("CreateNetworkCollectionBB");
550                 orchFlows.add(orch2);
551                 OrchestrationFlow orch3 = new OrchestrationFlow();
552                 orch3.setFlowName("AssignNetworkBB");
553                 orchFlows.add(orch3);
554                 OrchestrationFlow orch4 = new OrchestrationFlow();
555                 orch4.setFlowName("AssignVnfBB");
556                 orchFlows.add(orch4);
557                 OrchestrationFlow orch5 = new OrchestrationFlow();
558                 orch5.setFlowName("AssignVolumeGroupBB");
559                 orchFlows.add(orch5);
560                 OrchestrationFlow orch6 = new OrchestrationFlow();
561                 orch6.setFlowName("AssignVfModuleBB");
562                 orchFlows.add(orch6);
563                 OrchestrationFlow orch7 = new OrchestrationFlow();
564                 orch7.setFlowName("CreateNetworkBB");
565                 orchFlows.add(orch7);
566                 OrchestrationFlow orch8 = new OrchestrationFlow();
567                 orch8.setFlowName("ActivateNetworkBB");
568                 orchFlows.add(orch8);
569                 OrchestrationFlow orch9 = new OrchestrationFlow();
570                 orch9.setFlowName("CreateVolumeGroupBB");
571                 orchFlows.add(orch9);
572                 OrchestrationFlow orch10 = new OrchestrationFlow();
573                 orch10.setFlowName("ActivateVolumeGroupBB");
574                 orchFlows.add(orch10);
575                 OrchestrationFlow orch11 = new OrchestrationFlow();
576                 orch11.setFlowName("CreateVfModuleBB");
577                 orchFlows.add(orch11);
578                 OrchestrationFlow orch12 = new OrchestrationFlow();
579                 orch12.setFlowName("ActivateVfModuleBB");
580                 orchFlows.add(orch12);
581                 OrchestrationFlow orch13 = new OrchestrationFlow();
582                 orch13.setFlowName("ActivateVnfBB");
583                 orchFlows.add(orch13);
584                 OrchestrationFlow orch14 = new OrchestrationFlow();
585                 orch14.setFlowName("ActivateNetworkCollectionBB");
586                 orchFlows.add(orch14);
587                 OrchestrationFlow orch15 = new OrchestrationFlow();
588                 orch15.setFlowName("ActivateServiceInstanceBB");
589                 orchFlows.add(orch15);
590                 
591                 Service service = new Service();
592                 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
593                 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
594                 networkCust.setModelCustomizationUUID("123");
595                 networkCustomizations.add(networkCust);
596                 service.setNetworkCustomizations(networkCustomizations);
597                 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
598                 collectionResourceCustomization.setModelCustomizationUUID("123");
599                 
600                 CollectionResource collectionResource = new CollectionResource();
601                 collectionResource.setToscaNodeType("NetworkCollection");
602                 InstanceGroup instanceGroup = new InstanceGroup();
603                 instanceGroup.setToscaNodeType("NetworkCollectionResource");
604                 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
605                 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
606                 collectionNetworkResourceCust.setModelCustomizationUUID("123");
607                 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
608                 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
609                 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
610                 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
611                 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
612                 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
613                 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
614                 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
615                 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
616                 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
617                 collectionResource.setInstanceGroup(instanceGroup);
618                 collectionResourceCustomization.setCollectionResource(collectionResource);;
619                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
620                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
621                 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
622                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
623                 workflowAction.selectExecutionList(execution);
624                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
625                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
626                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
627                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
628                 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
629                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
630                 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
631                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
632                 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
633                 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
634                                 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId() 
635                                 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
636                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
637                 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
638                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
639                 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
640                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
641                 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
642                 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
643                                 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId() 
644                                 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
645                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
646                 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
647                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
648                 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
649                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
650                 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
651                 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
652                                 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId() 
653                                 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
654                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
655                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
656         }
657
658         @Test
659         public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
660                 String gAction = "createInstance";
661                 String resource = "Service";
662                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
663                 execution.setVariable("requestAction", gAction);
664                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
665                 execution.setVariable("bpmnRequest", bpmnRequest);                      
666                 execution.setVariable("aLaCarte", false);
667                 execution.setVariable("apiVersion", "7");
668                 execution.setVariable("requestUri", "v6/serviceInstances/123");
669                 
670                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
671                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
672                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
673                 OrchestrationFlow orch1 = new OrchestrationFlow();
674                 orch1.setFlowName("AssignServiceInstanceBB");
675                 orchFlows.add(orch1);
676                 OrchestrationFlow orch2 = new OrchestrationFlow();
677                 orch2.setFlowName("CreateNetworkCollectionBB");
678                 orchFlows.add(orch2);
679                 OrchestrationFlow orch3 = new OrchestrationFlow();
680                 orch3.setFlowName("AssignNetworkBB");
681                 orchFlows.add(orch3);
682                 OrchestrationFlow orch4 = new OrchestrationFlow();
683                 orch4.setFlowName("AssignVnfBB");
684                 orchFlows.add(orch4);
685                 OrchestrationFlow orch5 = new OrchestrationFlow();
686                 orch5.setFlowName("AssignVolumeGroupBB");
687                 orchFlows.add(orch5);
688                 OrchestrationFlow orch6 = new OrchestrationFlow();
689                 orch6.setFlowName("AssignVfModuleBB");
690                 orchFlows.add(orch6);
691                 OrchestrationFlow orch7 = new OrchestrationFlow();
692                 orch7.setFlowName("CreateNetworkBB");
693                 orchFlows.add(orch7);
694                 OrchestrationFlow orch8 = new OrchestrationFlow();
695                 orch8.setFlowName("ActivateNetworkBB");
696                 orchFlows.add(orch8);
697                 OrchestrationFlow orch9 = new OrchestrationFlow();
698                 orch9.setFlowName("CreateVolumeGroupBB");
699                 orchFlows.add(orch9);
700                 OrchestrationFlow orch10 = new OrchestrationFlow();
701                 orch10.setFlowName("ActivateVolumeGroupBB");
702                 orchFlows.add(orch10);
703                 OrchestrationFlow orch11 = new OrchestrationFlow();
704                 orch11.setFlowName("CreateVfModuleBB");
705                 orchFlows.add(orch11);
706                 OrchestrationFlow orch12 = new OrchestrationFlow();
707                 orch12.setFlowName("ActivateVfModuleBB");
708                 orchFlows.add(orch12);
709                 OrchestrationFlow orch13 = new OrchestrationFlow();
710                 orch13.setFlowName("ActivateVnfBB");
711                 orchFlows.add(orch13);
712                 OrchestrationFlow orch14 = new OrchestrationFlow();
713                 orch14.setFlowName("ActivateNetworkCollectionBB");
714                 orchFlows.add(orch14);
715                 OrchestrationFlow orch15 = new OrchestrationFlow();
716                 orch15.setFlowName("ActivateServiceInstanceBB");
717                 orchFlows.add(orch15);
718                 
719                 Service service = new Service();
720                 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
721                 
722                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
723                 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
724                 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
725                 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
726                 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
727                 HeatTemplate volumeHeatTemplate = new HeatTemplate();
728                 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
729                 vfModuleCustomization.setVfModule(vfModule);
730                 
731                 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
732                 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
733                 HeatEnvironment heatEnvironment = new HeatEnvironment();
734                 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
735                 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
736                 HeatTemplate moduleHeatTemplate = new HeatTemplate();
737                 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
738                 vfModuleCustomization2.setVfModule(vfModule2);
739                 
740                 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
741                 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
742                 
743                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
744                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
745                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
746                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
747                 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
748                 workflowAction.selectExecutionList(execution);
749                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
750                 
751                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
752                 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
753                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignVnfBB");
754                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
755                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignVolumeGroupBB");
756                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
757                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
758                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
759                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
760                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
761                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
762                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
763                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateVolumeGroupBB");
764                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
765                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateVolumeGroupBB");
766                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
767                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");              
768                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
769                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
770                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
771                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
772                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
773                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
774                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
775                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
776                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
777                 assertEquals(ebbs.get(13).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
778                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
779                 assertEquals(ebbs.get(14).getBuildingBlock().getBpmnFlowName(),"ActivateVnfBB");
780                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
781                 assertEquals(ebbs.get(15).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
782                 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
783                 assertEquals(true, execution.getVariable("homing"));
784         }
785         
786         @Test
787         public void selectExecutionListServiceMacroDeleteTest() throws Exception{
788                 String gAction = "deleteInstance";
789                 String resource = "Service";
790                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
791                 execution.setVariable("requestAction", gAction);
792                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
793                 execution.setVariable("bpmnRequest", bpmnRequest);              
794                 execution.setVariable("aLaCarte", false);
795                 execution.setVariable("apiVersion", "7");
796                 execution.setVariable("requestUri", "v6/serviceInstances/123");
797
798                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
799                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
800                 northBoundRequest.setOrchestrationFlowList(orchFlows);  
801                 OrchestrationFlow orch3 = new OrchestrationFlow();
802                 orch3.setFlowName("DeactivateVfModuleBB");
803                 orchFlows.add(orch3);
804                 OrchestrationFlow orch4 = new OrchestrationFlow();
805                 orch4.setFlowName("DeleteVfModuleBB");
806                 orchFlows.add(orch4);
807                 OrchestrationFlow orch5 = new OrchestrationFlow();
808                 orch5.setFlowName("DeactivateVolumeGroupBB");
809                 orchFlows.add(orch5);
810                 OrchestrationFlow orch6 = new OrchestrationFlow();
811                 orch6.setFlowName("DeleteVolumeGroupBB");
812                 orchFlows.add(orch6);
813                 OrchestrationFlow orch7 = new OrchestrationFlow();
814                 orch7.setFlowName("DeactivateVnfBB");
815                 orchFlows.add(orch7);
816                 OrchestrationFlow orch8 = new OrchestrationFlow();
817                 orch8.setFlowName("DeactivateNetworkBB");
818                 orchFlows.add(orch8);   
819                 OrchestrationFlow orch9 = new OrchestrationFlow();
820                 orch9.setFlowName("DeleteNetworkBB");
821                 orchFlows.add(orch9);   
822                 OrchestrationFlow orch10 = new OrchestrationFlow();
823                 orch10.setFlowName("DeleteNetworkCollectionBB");
824                 orchFlows.add(orch10);  
825                 OrchestrationFlow orch11 = new OrchestrationFlow();
826                 orch11.setFlowName("DeactivateServiceInstanceBB");
827                 orchFlows.add(orch11);  
828                 OrchestrationFlow orch12 = new OrchestrationFlow();
829                 orch12.setFlowName("UnassignVfModuleBB");
830                 orchFlows.add(orch12);  
831                 OrchestrationFlow orch13 = new OrchestrationFlow();
832                 orch13.setFlowName("UnassignVolumeGroupBB");
833                 orchFlows.add(orch13);  
834                 OrchestrationFlow orch14 = new OrchestrationFlow();
835                 orch14.setFlowName("UnassignVnfBB");
836                 orchFlows.add(orch14);  
837                 OrchestrationFlow orch15 = new OrchestrationFlow();
838                 orch15.setFlowName("UnassignNetworkBB");
839                 orchFlows.add(orch15);  
840                 OrchestrationFlow orch16 = new OrchestrationFlow();
841                 orch16.setFlowName("UnassignServiceInstanceBB");
842                 orchFlows.add(orch16);  
843                 
844                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
845                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
846                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
847                 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
848                 vnf.setVnfId("vnfId123");
849                 
850                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
851                 vfModule.setVfModuleId("vfModule1");
852                 vnf.getVfModules().add(vfModule);
853                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
854                 vfModule2.setVfModuleId("vfModule2");
855                 vnf.getVfModules().add(vfModule2);
856                 
857                 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
858                 volumeGroup.setVolumeGroupId("vg123");
859                 vnf.getVolumeGroups().add(volumeGroup);
860                 
861                 serviceInstanceMSO.getVnfs().add(vnf);
862                 
863                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
864                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
865                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
866                 workflowAction.selectExecutionList(execution);
867                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
868                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");
869                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");          
870                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
871                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
872                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeactivateVolumeGroupBB");
873                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"DeleteVolumeGroupBB");           
874                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateVnfBB");
875                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
876                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
877                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
878                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
879                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
880                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
881         }
882         
883         @Test
884         public void selectExecutionListServiceMacroUnassignTest() throws Exception{
885                 String gAction = "unassignInstance";
886                 String resource = "Service";
887                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
888                 execution.setVariable("requestAction", gAction);
889                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
890                 execution.setVariable("bpmnRequest", bpmnRequest);                      
891                 execution.setVariable("aLaCarte", false);
892                 execution.setVariable("apiVersion", "7");
893                 execution.setVariable("requestUri", "v6/serviceInstances/123");
894                 
895                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
896                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
897                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
898                 OrchestrationFlow orch1 = new OrchestrationFlow();
899                 orch1.setFlowName("UnassignVfModuleBB");
900                 orchFlows.add(orch1);
901                 OrchestrationFlow orch2 = new OrchestrationFlow();
902                 orch2.setFlowName("UnassignVolumeGroupBB");
903                 orchFlows.add(orch2);
904                 OrchestrationFlow orch3 = new OrchestrationFlow();
905                 orch3.setFlowName("UnassignVnfBB");
906                 orchFlows.add(orch3);
907                 OrchestrationFlow orch4 = new OrchestrationFlow();
908                 orch4.setFlowName("UnassignNetworkBB");
909                 orchFlows.add(orch4);
910                 OrchestrationFlow orch5 = new OrchestrationFlow();
911                 orch5.setFlowName("UnassignServiceInstanceBB");
912                 orchFlows.add(orch5);
913                 
914                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
915                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
916                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
917                 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
918                 vnf.setVnfId("vnfId123");
919                 
920                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
921                 vfModule.setVfModuleId("vfModule1");
922                 vnf.getVfModules().add(vfModule);
923                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
924                 vfModule2.setVfModuleId("vfModule2");
925                 vnf.getVfModules().add(vfModule2);
926                 
927                 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
928                 volumeGroup.setVolumeGroupId("vg123");
929                 vnf.getVolumeGroups().add(volumeGroup);
930                 
931                 serviceInstanceMSO.getVnfs().add(vnf);
932                 
933                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
934                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
935                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
936                 workflowAction.selectExecutionList(execution);
937                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
938                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
939                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");            
940                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
941                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
942                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
943         }
944         
945         @Test
946         public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
947                 String gAction = "deleteInstance";
948                 String resource = "Service";
949                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
950                 execution.setVariable("requestAction", gAction);
951                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
952                 execution.setVariable("bpmnRequest", bpmnRequest);                      
953                 execution.setVariable("aLaCarte", false);
954                 execution.setVariable("apiVersion", "7");
955                 execution.setVariable("requestUri", "v6/serviceInstances/123");
956                 
957                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
958                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
959                 northBoundRequest.setOrchestrationFlowList(orchFlows);  
960                 OrchestrationFlow orch3 = new OrchestrationFlow();
961                 orch3.setFlowName("DeactivateVfModuleBB");
962                 orchFlows.add(orch3);
963                 OrchestrationFlow orch4 = new OrchestrationFlow();
964                 orch4.setFlowName("DeleteVfModuleBB");
965                 orchFlows.add(orch4);
966                 OrchestrationFlow orch5 = new OrchestrationFlow();
967                 orch5.setFlowName("DeactivateVolumeGroupBB");
968                 orchFlows.add(orch5);
969                 OrchestrationFlow orch6 = new OrchestrationFlow();
970                 orch6.setFlowName("DeleteVolumeGroupBB");
971                 orchFlows.add(orch6);
972                 OrchestrationFlow orch7 = new OrchestrationFlow();
973                 orch7.setFlowName("DeactivateVnfBB");
974                 orchFlows.add(orch7);
975                 OrchestrationFlow orch8 = new OrchestrationFlow();
976                 orch8.setFlowName("DeactivateNetworkBB");
977                 orchFlows.add(orch8);   
978                 OrchestrationFlow orch9 = new OrchestrationFlow();
979                 orch9.setFlowName("DeleteNetworkBB");
980                 orchFlows.add(orch9);   
981                 OrchestrationFlow orch10 = new OrchestrationFlow();
982                 orch10.setFlowName("DeleteNetworkCollectionBB");
983                 orchFlows.add(orch10);  
984                 OrchestrationFlow orch11 = new OrchestrationFlow();
985                 orch11.setFlowName("DeactivateServiceInstanceBB");
986                 orchFlows.add(orch11);  
987                 OrchestrationFlow orch12 = new OrchestrationFlow();
988                 orch12.setFlowName("UnassignVfModuleBB");
989                 orchFlows.add(orch12);  
990                 OrchestrationFlow orch13 = new OrchestrationFlow();
991                 orch13.setFlowName("UnassignVolumeGroupBB");
992                 orchFlows.add(orch13);  
993                 OrchestrationFlow orch14 = new OrchestrationFlow();
994                 orch14.setFlowName("UnassignVnfBB");
995                 orchFlows.add(orch14);  
996                 OrchestrationFlow orch15 = new OrchestrationFlow();
997                 orch15.setFlowName("UnassignNetworkBB");
998                 orchFlows.add(orch15);  
999                 OrchestrationFlow orch16 = new OrchestrationFlow();
1000                 orch16.setFlowName("UnassignServiceInstanceBB");
1001                 orchFlows.add(orch16);  
1002                 
1003                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
1004                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
1005                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
1006                 
1007                 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1008                 network.setNetworkId("123");
1009                 serviceInstanceMSO.getNetworks().add(network);
1010                 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
1011                 network2.setNetworkId("321");
1012                 serviceInstanceMSO.getNetworks().add(network2);
1013                 
1014                 Collection collection = new Collection();
1015                 serviceInstanceMSO.setCollection(collection);
1016                 
1017                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
1018                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
1019                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
1020                 workflowAction.selectExecutionList(execution);
1021                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1022                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1023                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1024                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1025                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1026                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1027                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1028                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
1029                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
1030                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
1031         }
1032         
1033         @Ignore
1034         @Test
1035         public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
1036                 String gAction = "createInstance";
1037                 String resource = "NetworkCollection";
1038                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1039                 execution.setVariable("requestAction", gAction);
1040                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
1041                 execution.setVariable("bpmnRequest", bpmnRequest);              
1042                 execution.setVariable("aLaCarte", false);
1043                 execution.setVariable("apiVersion", "7");
1044                 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1045
1046                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1047                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1048                 northBoundRequest.setOrchestrationFlowList(orchFlows);
1049                 OrchestrationFlow orch1 = new OrchestrationFlow();
1050                 orch1.setFlowName("CreateNetworkCollectionBB");
1051                 orchFlows.add(orch1);
1052                 OrchestrationFlow orch2 = new OrchestrationFlow();
1053                 orch2.setFlowName("AssignNetworkBB");
1054                 orchFlows.add(orch2);
1055                 OrchestrationFlow orch3 = new OrchestrationFlow();
1056                 orch3.setFlowName("CreateNetworkBB");
1057                 orchFlows.add(orch3);
1058                 OrchestrationFlow orch4 = new OrchestrationFlow();
1059                 orch4.setFlowName("ActivateNetworkBB");
1060                 orchFlows.add(orch4);
1061                 OrchestrationFlow orch5 = new OrchestrationFlow();
1062                 orch5.setFlowName("ActivateNetworkCollectionBB");
1063                 orchFlows.add(orch5);
1064                 
1065                 Service service = new Service();
1066                 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1067                 CollectionResource collectionResource = new CollectionResource();
1068                 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1069                 collectionResourceCustomization.setCollectionResource(collectionResource);
1070                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1071                 
1072                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
1073                 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1074                 workflowAction.selectExecutionList(execution);
1075                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1076                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
1077                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1078                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1079                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1080                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1081                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1082                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1083                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
1084         }
1085         
1086         @Ignore
1087         @Test
1088         public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
1089                 String gAction = "deleteInstance";
1090                 String resource = "NetworkCollection";
1091                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1092                 execution.setVariable("requestAction", gAction);
1093                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
1094                 execution.setVariable("bpmnRequest", bpmnRequest);                      
1095                 execution.setVariable("aLaCarte", false);
1096                 execution.setVariable("apiVersion", "7");
1097                 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1098                 
1099                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1100                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1101                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
1102                 OrchestrationFlow orch1 = new OrchestrationFlow();
1103                 orch1.setFlowName("DeactivateNetworkBB");
1104                 orchFlows.add(orch1);
1105                 OrchestrationFlow orch2 = new OrchestrationFlow();
1106                 orch2.setFlowName("DeleteNetworkBB");
1107                 orchFlows.add(orch2);
1108                 OrchestrationFlow orch3 = new OrchestrationFlow();
1109                 orch3.setFlowName("UnassignNetworkBB");
1110                 orchFlows.add(orch3);
1111                 OrchestrationFlow orch4 = new OrchestrationFlow();
1112                 orch4.setFlowName("DeactivateNetworkCollectionBB");
1113                 orchFlows.add(orch4);
1114                 OrchestrationFlow orch5 = new OrchestrationFlow();
1115                 orch5.setFlowName("DeleteNetworkCollectionBB");
1116                 orchFlows.add(orch5);
1117                 
1118                 Service service = new Service();
1119                 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1120                 CollectionResource collectionResource = new CollectionResource();
1121                 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1122                 collectionResourceCustomization.setCollectionResource(collectionResource);
1123                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1124                 
1125                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
1126                 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1127                 workflowAction.selectExecutionList(execution);
1128                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1129                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1130                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1131                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1132                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1133                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1134                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1135                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkCollectionBB");
1136                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
1137         }
1138         
1139         /**
1140          * WorkflowActionBB Tests
1141          */
1142         
1143         @Test
1144         public void pluralTest() {
1145                 List<String> items = Arrays.asList(
1146                                 "serviceInstances, Service",
1147                                 "vnfs, Vnf",
1148                                 "vfModules, VfModule",
1149                                 "networks, Network",
1150                                 "invalidNames, invalidNames");
1151                 items.forEach(item -> {
1152                         String[] split = item.split(",");
1153                         String type = split[0].trim();
1154                         String expected = split[1].trim();
1155                         assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1156                 });
1157         }
1158         
1159         @Test
1160         public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
1161                 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1162                 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1163                 BuildingBlock bb = new BuildingBlock();
1164                 bb.setBpmnFlowName("AssignNetworkBB");
1165                 bb.setKey("0");
1166                 ebb.setBuildingBlock(bb);
1167                 executeFlows.add(ebb);
1168                 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1169                 BuildingBlock bb2 = new BuildingBlock();
1170                 bb2.setBpmnFlowName("AssignNetworkBB");
1171                 bb2.setKey("1");
1172                 ebb2.setBuildingBlock(bb2);
1173                 executeFlows.add(ebb2);
1174                 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1175                 BuildingBlock bb3 = new BuildingBlock();
1176                 bb3.setBpmnFlowName("CreateNetworkBB");
1177                 bb3.setKey("0");
1178                 ebb3.setBuildingBlock(bb3);
1179                 executeFlows.add(ebb3);
1180                 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1181                 BuildingBlock bb4 = new BuildingBlock();
1182                 bb4.setBpmnFlowName("CreateNetworkBB");
1183                 bb4.setKey("1");
1184                 ebb4.setBuildingBlock(bb4);
1185                 executeFlows.add(ebb4);
1186                 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1187                 BuildingBlock bb5 = new BuildingBlock();
1188                 bb5.setBpmnFlowName("ActivateNetworkBB");
1189                 bb5.setKey("0");
1190                 ebb5.setBuildingBlock(bb5);
1191                 executeFlows.add(ebb5);
1192                 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1193                 BuildingBlock bb6 = new BuildingBlock();
1194                 bb6.setBpmnFlowName("ActivateNetworkBB");
1195                 bb6.setKey("1");
1196                 ebb6.setBuildingBlock(bb6);
1197                 executeFlows.add(ebb6);
1198
1199                 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
1200                 assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1201                 assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1202                 assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1203                 assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1204                 assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1205                 assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1206         }
1207         
1208         @Test
1209         public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
1210                 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1211                 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1212                 BuildingBlock bb = new BuildingBlock();
1213                 bb.setBpmnFlowName("DeactivateNetworkBB");
1214                 bb.setKey("0");
1215                 ebb.setBuildingBlock(bb);
1216                 executeFlows.add(ebb);
1217                 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1218                 BuildingBlock bb2 = new BuildingBlock();
1219                 bb2.setBpmnFlowName("DeactivateNetworkBB");
1220                 bb2.setKey("1");
1221                 ebb2.setBuildingBlock(bb2);
1222                 executeFlows.add(ebb2);
1223                 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1224                 BuildingBlock bb3 = new BuildingBlock();
1225                 bb3.setBpmnFlowName("DeleteNetworkBB");
1226                 bb3.setKey("0");
1227                 ebb3.setBuildingBlock(bb3);
1228                 executeFlows.add(ebb3);
1229                 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1230                 BuildingBlock bb4 = new BuildingBlock();
1231                 bb4.setBpmnFlowName("DeleteNetworkBB");
1232                 bb4.setKey("1");
1233                 ebb4.setBuildingBlock(bb4);
1234                 executeFlows.add(ebb4);
1235                 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1236                 BuildingBlock bb5 = new BuildingBlock();
1237                 bb5.setBpmnFlowName("UnassignNetworkBB");
1238                 bb5.setKey("0");
1239                 ebb5.setBuildingBlock(bb5);
1240                 executeFlows.add(ebb5);
1241                 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1242                 BuildingBlock bb6 = new BuildingBlock();
1243                 bb6.setBpmnFlowName("UnassignNetworkBB");
1244                 bb6.setKey("1");
1245                 ebb6.setBuildingBlock(bb6);
1246                 executeFlows.add(ebb6);
1247                 
1248                 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1249                 assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1250                 assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1251                 assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1252                 assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1253                 assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1254                 assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1255         }
1256         @Test
1257         public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1258                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1259                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1260                 OrchestrationFlow orch1 = new OrchestrationFlow();
1261                 orch1.setFlowName("AAICheckVnfInMaintBB");
1262                 orchFlows.add(orch1);
1263                 OrchestrationFlow orch2 = new OrchestrationFlow();
1264                 orch2.setFlowName("AAISetVnfInMaintBB");
1265                 orchFlows.add(orch2);
1266                 OrchestrationFlow orch3 = new OrchestrationFlow();
1267                 orch3.setFlowName("VNF-Macro-Replace");
1268                 orchFlows.add(orch3);
1269                 OrchestrationFlow orch4 = new OrchestrationFlow();
1270                 orch4.setFlowName("SDNOVnfHealthCheckBB");
1271                 orchFlows.add(orch4);
1272                 OrchestrationFlow orch5 = new OrchestrationFlow();
1273                 orch5.setFlowName("AAIUnsetVnfInMaintBB");
1274                 orchFlows.add(orch5);
1275                 northBoundRequest.setOrchestrationFlowList(orchFlows);
1276                 
1277                 List<OrchestrationFlow> macroFlows = new LinkedList<>();
1278                 OrchestrationFlow o1 = new OrchestrationFlow();
1279                 o1.setFlowName("DeactivateVfModuleBB");
1280                 macroFlows.add(o1);
1281                 OrchestrationFlow o2 = new OrchestrationFlow();
1282                 o2.setFlowName("DeleteVfModuleBB");
1283                 macroFlows.add(o2);
1284                 OrchestrationFlow o3 = new OrchestrationFlow();
1285                 o3.setFlowName("DeactivateVnfBB");
1286                 macroFlows.add(o3);
1287                 OrchestrationFlow o4 = new OrchestrationFlow();
1288                 o4.setFlowName("CreateVfModuleBB");
1289                 macroFlows.add(o4);
1290                 OrchestrationFlow o5 = new OrchestrationFlow();
1291                 o5.setFlowName("ActivateVfModuleBB");
1292                 macroFlows.add(o5);
1293                 OrchestrationFlow o6 = new OrchestrationFlow();
1294                 o6.setFlowName("ActivateVnfBB");
1295                 macroFlows.add(o6);
1296                 
1297                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope("replaceInstance","Vnf",false)).thenReturn(northBoundRequest);
1298                 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1299                 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false);
1300                 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1301                 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1302                 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1303                 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1304                 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");     
1305                 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");    
1306                 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");  
1307                 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");       
1308                 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1309                 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1310         }       
1311
1312         @Test
1313         public void extractResourceIdAndTypeFromUriTest(){
1314                 String uri = "/v6/serviceInstances/123";
1315                 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1316                 String uri3 = "/v6/serviceInstances";
1317                 String uri4 = "/v6/serviceInstances/assign";
1318                 String uri5 = "'/v6/serviceInstances/123/vnfs";
1319                 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1320                 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1321                 
1322                 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1323                 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1324                 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1325                 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1326                 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1327                 assertEquals(expected1.getResourceId(),result.getResourceId());
1328                 assertEquals(expected1.getResourceType(),result.getResourceType());
1329                 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1330                 assertEquals(expected2.getResourceId(),result.getResourceId());
1331                 assertEquals(expected2.getResourceType(),result.getResourceType());
1332                 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1333                 assertEquals("Service", result.getResourceType().toString());
1334                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1335                 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1336                 assertEquals("Service", result.getResourceType().toString());
1337                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1338                 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1339                 assertEquals("Vnf", result.getResourceType().toString());
1340                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1341                 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1342                 assertEquals(expected3.getResourceId(),result.getResourceId());
1343                 assertEquals(expected3.getResourceType(),result.getResourceType());
1344                 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1345                 assertEquals(expected4.getResourceId(),result.getResourceId());
1346                 assertEquals(expected4.getResourceType(),result.getResourceType());
1347         }
1348         
1349         @Test
1350         public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1351                 this.expectedException.expect(IllegalArgumentException.class);
1352                 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1353                 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1354         }
1355         
1356         @Test
1357         public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1358                 this.expectedException.expect(IllegalArgumentException.class);
1359                 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1360                 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1361         }
1362         
1363         @Test
1364         public void populateResourceIdsFromApiHandlerTest(){
1365                 execution.setVariable("serviceInstanceId", "123");
1366                 execution.setVariable("vnfId", "888");
1367                 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1368                 assertEquals("123",x.getServiceInstanceId());
1369                 assertEquals("888",x.getVnfId());
1370                 assertNull(x.getVolumeGroupId());
1371         }
1372         
1373         @Test
1374         public void validateResourceIdInAAITest() throws Exception{
1375                 //SI
1376                 RequestDetails reqDetails = new RequestDetails();
1377                 SubscriberInfo subInfo = new SubscriberInfo();
1378                 subInfo.setGlobalSubscriberId("id123");
1379                 reqDetails.setSubscriberInfo(subInfo);
1380                 RequestParameters reqParams = new RequestParameters();
1381                 reqParams.setSubscriptionServiceType("subServiceType123");
1382                 reqDetails.setRequestParameters(reqParams );
1383                 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1384                 ServiceInstance si = new ServiceInstance();
1385                 si.setServiceInstanceId("siId123");
1386                 Optional<ServiceInstance> siOp = Optional.of(si);
1387                 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1388                 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1389                 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1390                 assertEquals("siId123",id);
1391                 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1392                 assertEquals("generatedId123",id2);
1393                 
1394                 //Network
1395                 L3Network network = new L3Network();
1396                 network.setNetworkId("id123");
1397                 network.setNetworkName("name123");
1398                 workflowResourceIds.setServiceInstanceId("siId123");
1399                 Optional<L3Network> opNetwork = Optional.of(network);
1400                 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1401                 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1402                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1403                 assertEquals("id123",id);
1404                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1405                 assertEquals("generatedId123",id2);
1406                 
1407                 //Vnf
1408                 GenericVnf vnf = new GenericVnf();
1409                 vnf.setVnfId("id123");
1410                 vnf.setVnfName("vnfName123");
1411                 Optional<GenericVnf> opVnf = Optional.of(vnf);
1412                 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1413                 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1414                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1415                 assertEquals("id123",id);
1416                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1417                 assertEquals("generatedId123",id2);
1418                 
1419                 //VfModule
1420                 VfModules vfModules = new VfModules();
1421                 VfModule vfModule = new VfModule();
1422                 vfModule.setVfModuleId("id123");
1423                 vfModule.setVfModuleName("name123");
1424                 vfModules.getVfModule().add(vfModule);
1425                 vnf.setVfModules(vfModules);
1426                 workflowResourceIds.setVnfId("id123");
1427                 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1428                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1429                 assertEquals("id123",id);
1430
1431                 GenericVnf vnf2 = new GenericVnf();
1432                 VfModules vfModules2 = new VfModules();
1433                 VfModule vfModule2 = new VfModule();
1434                 vfModule2.setVfModuleId("id123");
1435                 vfModule2.setVfModuleName("name123");
1436                 vfModules2.getVfModule().add(vfModule2);
1437                 vnf2.setVfModules(vfModules2);
1438                 workflowResourceIds.setVnfId("id111");
1439                 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1440                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1441                 assertEquals("generatedId123",id2);
1442                 
1443                 //VolumeGroup
1444                 VolumeGroup volumeGroup = new VolumeGroup();
1445                 volumeGroup.setVolumeGroupId("id123");
1446                 volumeGroup.setVolumeGroupName("name123");
1447                 workflowResourceIds.setVnfId("id123");
1448                 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1449                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1450                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1451                 assertEquals("id123",id);
1452                 
1453                 workflowResourceIds.setVnfId("id444");
1454                 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1455                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1456                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1457                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1458                 assertEquals("id123",id2);
1459         }
1460         
1461         @Test
1462         public void handleRuntimeExceptionTest(){
1463                 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1464                 execution.setVariable("testProcessKey", "testProcessKeyValue");
1465                 try{
1466                         workflowAction.handleRuntimeException(execution);
1467                 } catch (BpmnError wfe) {
1468                         assertEquals("MSOWorkflowException",wfe.getErrorCode());
1469                 }
1470         }
1471         
1472         @Test
1473         public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1474                 execution.setVariable("testProcessKey", "testProcessKeyValue");
1475                 Service service = new Service();
1476                 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1477                 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1478                 networkCust.setModelCustomizationUUID("123");
1479                 networkCustomizations.add(networkCust);
1480                 service.setNetworkCustomizations(networkCustomizations);
1481                 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1482                 collectionResourceCustomization.setModelCustomizationUUID("123");
1483                 CollectionResource collectionResource = new CollectionResource();
1484                 collectionResource.setToscaNodeType("NetworkCollection");
1485                 InstanceGroup instanceGroup = new InstanceGroup();
1486                 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1487                 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1488                 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1489                 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1490                 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1491                 collectionResource.setInstanceGroup(instanceGroup);
1492                 collectionResourceCustomization.setCollectionResource(collectionResource);;
1493                 service.setModelUUID("abc");
1494                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1495                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1496                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1497                 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1498                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1499                 ObjectMapper mapper = new ObjectMapper();
1500                 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1501                 List<Resource> resourceCounter = new ArrayList<>();
1502                 thrown.expect(BpmnError.class);
1503                 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1504         }
1505         
1506         @Test
1507         public void sortVfModulesByBaseFirstTest(){
1508                 List<Resource> resources = new ArrayList<>();
1509                 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1510                 resource1.setBaseVfModule(false);
1511                 resources.add(resource1);
1512                 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1513                 resource2.setBaseVfModule(false);
1514                 resources.add(resource2);
1515                 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1516                 resource3.setBaseVfModule(true);
1517                 resources.add(resource3);
1518                 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1519                 assertEquals("333",result.get(0).getResourceId());
1520                 assertEquals("222",result.get(1).getResourceId());
1521                 assertEquals("111",result.get(2).getResourceId());
1522         }
1523 }