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