c910ad19facdeed8213573ead2d21b414d4ab955
[so.git] /
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                 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
604                 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
605                 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
606                 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
607                 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
608                 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
609                 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
610                 collectionResource.setInstanceGroup(instanceGroup);
611                 collectionResourceCustomization.setCollectionResource(collectionResource);;
612                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
613                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
614                 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
615                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
616                 workflowAction.selectExecutionList(execution);
617                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
618                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
619                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
620                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
621                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
622                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
623                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
624                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
625                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
626                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
627                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
628                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
629                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
630                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
631         }
632
633         @Test
634         public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
635                 String gAction = "createInstance";
636                 String resource = "Service";
637                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
638                 execution.setVariable("requestAction", gAction);
639                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
640                 execution.setVariable("bpmnRequest", bpmnRequest);                      
641                 execution.setVariable("aLaCarte", false);
642                 execution.setVariable("apiVersion", "7");
643                 execution.setVariable("requestUri", "v6/serviceInstances/123");
644                 
645                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
646                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
647                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
648                 OrchestrationFlow orch1 = new OrchestrationFlow();
649                 orch1.setFlowName("AssignServiceInstanceBB");
650                 orchFlows.add(orch1);
651                 OrchestrationFlow orch2 = new OrchestrationFlow();
652                 orch2.setFlowName("CreateNetworkCollectionBB");
653                 orchFlows.add(orch2);
654                 OrchestrationFlow orch3 = new OrchestrationFlow();
655                 orch3.setFlowName("AssignNetworkBB");
656                 orchFlows.add(orch3);
657                 OrchestrationFlow orch4 = new OrchestrationFlow();
658                 orch4.setFlowName("AssignVnfBB");
659                 orchFlows.add(orch4);
660                 OrchestrationFlow orch5 = new OrchestrationFlow();
661                 orch5.setFlowName("AssignVolumeGroupBB");
662                 orchFlows.add(orch5);
663                 OrchestrationFlow orch6 = new OrchestrationFlow();
664                 orch6.setFlowName("AssignVfModuleBB");
665                 orchFlows.add(orch6);
666                 OrchestrationFlow orch7 = new OrchestrationFlow();
667                 orch7.setFlowName("CreateNetworkBB");
668                 orchFlows.add(orch7);
669                 OrchestrationFlow orch8 = new OrchestrationFlow();
670                 orch8.setFlowName("ActivateNetworkBB");
671                 orchFlows.add(orch8);
672                 OrchestrationFlow orch9 = new OrchestrationFlow();
673                 orch9.setFlowName("CreateVolumeGroupBB");
674                 orchFlows.add(orch9);
675                 OrchestrationFlow orch10 = new OrchestrationFlow();
676                 orch10.setFlowName("ActivateVolumeGroupBB");
677                 orchFlows.add(orch10);
678                 OrchestrationFlow orch11 = new OrchestrationFlow();
679                 orch11.setFlowName("CreateVfModuleBB");
680                 orchFlows.add(orch11);
681                 OrchestrationFlow orch12 = new OrchestrationFlow();
682                 orch12.setFlowName("ActivateVfModuleBB");
683                 orchFlows.add(orch12);
684                 OrchestrationFlow orch13 = new OrchestrationFlow();
685                 orch13.setFlowName("ActivateVnfBB");
686                 orchFlows.add(orch13);
687                 OrchestrationFlow orch14 = new OrchestrationFlow();
688                 orch14.setFlowName("ActivateNetworkCollectionBB");
689                 orchFlows.add(orch14);
690                 OrchestrationFlow orch15 = new OrchestrationFlow();
691                 orch15.setFlowName("ActivateServiceInstanceBB");
692                 orchFlows.add(orch15);
693                 
694                 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
695                 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
696                 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
697                 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
698                 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
699                 HeatTemplate volumeHeatTemplate = new HeatTemplate();
700                 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
701                 vfModuleCustomization.setVfModule(vfModule);
702                 
703                 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
704                 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
705                 HeatEnvironment heatEnvironment = new HeatEnvironment();
706                 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
707                 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
708                 HeatTemplate moduleHeatTemplate = new HeatTemplate();
709                 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
710                 vfModuleCustomization2.setVfModule(vfModule2);
711                 
712                 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
713                 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
714                 
715                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
716                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
717                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
718                 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
719                 workflowAction.selectExecutionList(execution);
720                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
721                 
722                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"AssignServiceInstanceBB");
723                 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
724                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignVnfBB");
725                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
726                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"AssignVolumeGroupBB");
727                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
728                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
729                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
730                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
731                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
732                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"AssignVfModuleBB");
733                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
734                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"CreateVolumeGroupBB");
735                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
736                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateVolumeGroupBB");
737                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
738                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");              
739                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
740                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
741                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
742                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"CreateVfModuleBB");
743                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
744                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
745                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
746                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
747                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
748                 assertEquals(ebbs.get(13).getBuildingBlock().getBpmnFlowName(),"ActivateVfModuleBB");
749                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
750                 assertEquals(ebbs.get(14).getBuildingBlock().getBpmnFlowName(),"ActivateVnfBB");
751                 assertEquals(UUID.randomUUID().toString().length(),ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
752                 assertEquals(ebbs.get(15).getBuildingBlock().getBpmnFlowName(),"ActivateServiceInstanceBB");
753                 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
754
755         }
756         
757         @Test
758         public void selectExecutionListServiceMacroDeleteTest() throws Exception{
759                 String gAction = "deleteInstance";
760                 String resource = "Service";
761                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
762                 execution.setVariable("requestAction", gAction);
763                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
764                 execution.setVariable("bpmnRequest", bpmnRequest);              
765                 execution.setVariable("aLaCarte", false);
766                 execution.setVariable("apiVersion", "7");
767                 execution.setVariable("requestUri", "v6/serviceInstances/123");
768
769                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
770                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
771                 northBoundRequest.setOrchestrationFlowList(orchFlows);  
772                 OrchestrationFlow orch1 = new OrchestrationFlow();
773                 orch1.setFlowName("DeactivateVfModuleBB");
774                 orchFlows.add(orch1);
775                 OrchestrationFlow orch2 = new OrchestrationFlow();
776                 orch2.setFlowName("DeleteVfModuleBB");
777                 orchFlows.add(orch2);
778                 OrchestrationFlow orch3 = new OrchestrationFlow();
779                 orch3.setFlowName("DeactivateVolumeGroupBB");
780                 orchFlows.add(orch3);
781                 OrchestrationFlow orch4 = new OrchestrationFlow();
782                 orch4.setFlowName("DeleteVolumeGroupBB");
783                 orchFlows.add(orch4);
784                 OrchestrationFlow orch5 = new OrchestrationFlow();
785                 orch5.setFlowName("DeactivateVnfBB");
786                 orchFlows.add(orch5);
787                 OrchestrationFlow orch6 = new OrchestrationFlow();
788                 orch6.setFlowName("DeactivateNetworkBB");
789                 orchFlows.add(orch6);
790                 OrchestrationFlow orch7 = new OrchestrationFlow();
791                 orch7.setFlowName("DeleteNetworkBB");
792                 orchFlows.add(orch7);
793                 OrchestrationFlow orch8 = new OrchestrationFlow();
794                 orch8.setFlowName("DeleteNetworkCollectionBB");
795                 orchFlows.add(orch8);   
796                 OrchestrationFlow orch9 = new OrchestrationFlow();
797                 orch9.setFlowName("DeactivateServiceInstanceBB");
798                 orchFlows.add(orch9);   
799                 OrchestrationFlow orch10 = new OrchestrationFlow();
800                 orch10.setFlowName("UnassignVfModuleBB");
801                 orchFlows.add(orch10);  
802                 OrchestrationFlow orch11 = new OrchestrationFlow();
803                 orch11.setFlowName("UnassignVolumeGroupBB");
804                 orchFlows.add(orch11);  
805                 OrchestrationFlow orch12 = new OrchestrationFlow();
806                 orch12.setFlowName("UnassignVnfBB");
807                 orchFlows.add(orch12);  
808                 OrchestrationFlow orch13 = new OrchestrationFlow();
809                 orch13.setFlowName("UnassignNetworkBB");
810                 orchFlows.add(orch13);  
811                 OrchestrationFlow orch14 = new OrchestrationFlow();
812                 orch14.setFlowName("UnassignServiceInstanceBB");
813                 orchFlows.add(orch14);  
814                 
815                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
816                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
817                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
818                 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
819                 vnf.setVnfId("vnfId123");
820                 
821                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
822                 vfModule.setVfModuleId("vfModule1");
823                 vnf.getVfModules().add(vfModule);
824                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
825                 vfModule2.setVfModuleId("vfModule2");
826                 vnf.getVfModules().add(vfModule2);
827                 
828                 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
829                 volumeGroup.setVolumeGroupId("vg123");
830                 vnf.getVolumeGroups().add(volumeGroup);
831                 
832                 serviceInstanceMSO.getVnfs().add(vnf);
833                 
834                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
835                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
836                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
837                 workflowAction.selectExecutionList(execution);
838                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
839                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");
840                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeactivateVfModuleBB");          
841                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
842                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeleteVfModuleBB");
843                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeactivateVolumeGroupBB");
844                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"DeleteVolumeGroupBB");           
845                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateVnfBB");
846                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
847                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
848                 assertEquals(ebbs.get(9).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
849                 assertEquals(ebbs.get(10).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
850                 assertEquals(ebbs.get(11).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
851                 assertEquals(ebbs.get(12).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
852         }
853         
854         @Test
855         public void selectExecutionListServiceMacroUnassignTest() throws Exception{
856                 String gAction = "unassignInstance";
857                 String resource = "Service";
858                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
859                 execution.setVariable("requestAction", gAction);
860                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
861                 execution.setVariable("bpmnRequest", bpmnRequest);                      
862                 execution.setVariable("aLaCarte", false);
863                 execution.setVariable("apiVersion", "7");
864                 execution.setVariable("requestUri", "v6/serviceInstances/123");
865                 
866                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
867                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
868                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
869                 OrchestrationFlow orch1 = new OrchestrationFlow();
870                 orch1.setFlowName("UnassignVfModuleBB");
871                 orchFlows.add(orch1);
872                 OrchestrationFlow orch2 = new OrchestrationFlow();
873                 orch2.setFlowName("UnassignVolumeGroupBB");
874                 orchFlows.add(orch2);
875                 OrchestrationFlow orch3 = new OrchestrationFlow();
876                 orch3.setFlowName("UnassignVnfBB");
877                 orchFlows.add(orch3);
878                 OrchestrationFlow orch4 = new OrchestrationFlow();
879                 orch4.setFlowName("UnassignNetworkBB");
880                 orchFlows.add(orch4);
881                 OrchestrationFlow orch5 = new OrchestrationFlow();
882                 orch5.setFlowName("UnassignServiceInstanceBB");
883                 orchFlows.add(orch5);
884                 
885                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
886                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
887                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
888                 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
889                 vnf.setVnfId("vnfId123");
890                 
891                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
892                 vfModule.setVfModuleId("vfModule1");
893                 vnf.getVfModules().add(vfModule);
894                 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
895                 vfModule2.setVfModuleId("vfModule2");
896                 vnf.getVfModules().add(vfModule2);
897                 
898                 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
899                 volumeGroup.setVolumeGroupId("vg123");
900                 vnf.getVolumeGroups().add(volumeGroup);
901                 
902                 serviceInstanceMSO.getVnfs().add(vnf);
903                 
904                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
905                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
906                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
907                 workflowAction.selectExecutionList(execution);
908                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
909                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");
910                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"UnassignVfModuleBB");            
911                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignVolumeGroupBB");
912                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"UnassignVnfBB");
913                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
914         }
915         
916         @Test
917         public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
918                 String gAction = "deleteInstance";
919                 String resource = "Service";
920                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
921                 execution.setVariable("requestAction", gAction);
922                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
923                 execution.setVariable("bpmnRequest", bpmnRequest);                      
924                 execution.setVariable("aLaCarte", false);
925                 execution.setVariable("apiVersion", "7");
926                 execution.setVariable("requestUri", "v6/serviceInstances/123");
927                 
928                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
929                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
930                 northBoundRequest.setOrchestrationFlowList(orchFlows);                          
931                 OrchestrationFlow orch1 = new OrchestrationFlow();
932                 orch1.setFlowName("DeactivateVfModuleBB");
933                 orchFlows.add(orch1);
934                 OrchestrationFlow orch2 = new OrchestrationFlow();
935                 orch2.setFlowName("DeleteVfModuleBB");
936                 orchFlows.add(orch2);
937                 OrchestrationFlow orch3 = new OrchestrationFlow();
938                 orch3.setFlowName("DeactivateVolumeGroupBB");
939                 orchFlows.add(orch3);
940                 OrchestrationFlow orch4 = new OrchestrationFlow();
941                 orch4.setFlowName("DeleteVolumeGroupBB");
942                 orchFlows.add(orch4);
943                 OrchestrationFlow orch5 = new OrchestrationFlow();
944                 orch5.setFlowName("DeactivateVnfBB");
945                 orchFlows.add(orch5);
946                 OrchestrationFlow orch6 = new OrchestrationFlow();
947                 orch6.setFlowName("DeactivateNetworkBB");
948                 orchFlows.add(orch6);
949                 OrchestrationFlow orch7 = new OrchestrationFlow();
950                 orch7.setFlowName("DeleteNetworkBB");
951                 orchFlows.add(orch7);
952                 OrchestrationFlow orch8 = new OrchestrationFlow();
953                 orch8.setFlowName("DeleteNetworkCollectionBB");
954                 orchFlows.add(orch8);
955                 OrchestrationFlow orch9 = new OrchestrationFlow();
956                 orch9.setFlowName("DeactivateServiceInstanceBB");
957                 orchFlows.add(orch9);
958                 OrchestrationFlow orch10 = new OrchestrationFlow();
959                 orch10.setFlowName("UnassignVfModuleBB");
960                 orchFlows.add(orch10);
961                 OrchestrationFlow orch11 = new OrchestrationFlow();
962                 orch11.setFlowName("UnassignVolumeGroupBB");
963                 orchFlows.add(orch11);
964                 OrchestrationFlow orch12 = new OrchestrationFlow();
965                 orch12.setFlowName("UnassignVnfBB");
966                 orchFlows.add(orch12);
967                 OrchestrationFlow orch13 = new OrchestrationFlow();
968                 orch13.setFlowName("UnassignNetworkBB");
969                 orchFlows.add(orch13);
970                 OrchestrationFlow orch14 = new OrchestrationFlow();
971                 orch14.setFlowName("UnassignServiceInstanceBB");
972                 orchFlows.add(orch14);
973                 
974                 ServiceInstance serviceInstanceAAI = new ServiceInstance();
975                 serviceInstanceAAI.setServiceInstanceId("aaisi123");
976                 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
977                 
978                 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
979                 network.setNetworkId("123");
980                 serviceInstanceMSO.getNetworks().add(network);
981                 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
982                 network2.setNetworkId("321");
983                 serviceInstanceMSO.getNetworks().add(network2);
984                 
985                 Collection collection = new Collection();
986                 serviceInstanceMSO.setCollection(collection);
987                 
988                 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
989                 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
990                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
991                 workflowAction.selectExecutionList(execution);
992                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
993                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
994                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
995                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
996                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
997                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
998                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
999                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
1000                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
1001                 assertEquals(ebbs.get(8).getBuildingBlock().getBpmnFlowName(),"UnassignServiceInstanceBB");
1002         }
1003         
1004         @Ignore
1005         @Test
1006         public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
1007                 String gAction = "createInstance";
1008                 String resource = "NetworkCollection";
1009                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1010                 execution.setVariable("requestAction", gAction);
1011                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
1012                 execution.setVariable("bpmnRequest", bpmnRequest);              
1013                 execution.setVariable("aLaCarte", false);
1014                 execution.setVariable("apiVersion", "7");
1015                 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1016
1017                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1018                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1019                 northBoundRequest.setOrchestrationFlowList(orchFlows);
1020                 OrchestrationFlow orch1 = new OrchestrationFlow();
1021                 orch1.setFlowName("CreateNetworkCollectionBB");
1022                 orchFlows.add(orch1);
1023                 OrchestrationFlow orch2 = new OrchestrationFlow();
1024                 orch2.setFlowName("AssignNetworkBB");
1025                 orchFlows.add(orch2);
1026                 OrchestrationFlow orch3 = new OrchestrationFlow();
1027                 orch3.setFlowName("CreateNetworkBB");
1028                 orchFlows.add(orch3);
1029                 OrchestrationFlow orch4 = new OrchestrationFlow();
1030                 orch4.setFlowName("ActivateNetworkBB");
1031                 orchFlows.add(orch4);
1032                 OrchestrationFlow orch5 = new OrchestrationFlow();
1033                 orch5.setFlowName("ActivateNetworkCollectionBB");
1034                 orchFlows.add(orch5);
1035                 
1036                 Service service = new Service();
1037                 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1038                 CollectionResource collectionResource = new CollectionResource();
1039                 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1040                 collectionResourceCustomization.setCollectionResource(collectionResource);
1041                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1042                 
1043                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
1044                 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1045                 workflowAction.selectExecutionList(execution);
1046                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1047                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"CreateNetworkCollectionBB");
1048                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1049                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1050                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1051                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1052                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1053                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1054                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkCollectionBB");
1055         }
1056         
1057         @Ignore
1058         @Test
1059         public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
1060                 String gAction = "deleteInstance";
1061                 String resource = "NetworkCollection";
1062                 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
1063                 execution.setVariable("requestAction", gAction);
1064                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
1065                 execution.setVariable("bpmnRequest", bpmnRequest);                      
1066                 execution.setVariable("aLaCarte", false);
1067                 execution.setVariable("apiVersion", "7");
1068                 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
1069                 
1070                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1071                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1072                 northBoundRequest.setOrchestrationFlowList(orchFlows);          
1073                 OrchestrationFlow orch1 = new OrchestrationFlow();
1074                 orch1.setFlowName("DeactivateNetworkBB");
1075                 orchFlows.add(orch1);
1076                 OrchestrationFlow orch2 = new OrchestrationFlow();
1077                 orch2.setFlowName("DeleteNetworkBB");
1078                 orchFlows.add(orch2);
1079                 OrchestrationFlow orch3 = new OrchestrationFlow();
1080                 orch3.setFlowName("UnassignNetworkBB");
1081                 orchFlows.add(orch3);
1082                 OrchestrationFlow orch4 = new OrchestrationFlow();
1083                 orch4.setFlowName("DeactivateNetworkCollectionBB");
1084                 orchFlows.add(orch4);
1085                 OrchestrationFlow orch5 = new OrchestrationFlow();
1086                 orch5.setFlowName("DeleteNetworkCollectionBB");
1087                 orchFlows.add(orch5);
1088                 
1089                 Service service = new Service();
1090                 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
1091                 CollectionResource collectionResource = new CollectionResource();
1092                 collectionResource.setToscaNodeType("Data NetworkCollection Data");
1093                 collectionResourceCustomization.setCollectionResource(collectionResource);
1094                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1095                 
1096                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
1097                 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
1098                 workflowAction.selectExecutionList(execution);
1099                 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
1100                 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1101                 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1102                 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1103                 assertEquals(ebbs.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1104                 assertEquals(ebbs.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1105                 assertEquals(ebbs.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1106                 assertEquals(ebbs.get(6).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkCollectionBB");
1107                 assertEquals(ebbs.get(7).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkCollectionBB");
1108         }
1109         
1110         /**
1111          * WorkflowActionBB Tests
1112          */
1113         
1114         @Test
1115         public void pluralTest() {
1116                 List<String> items = Arrays.asList(
1117                                 "serviceInstances, Service",
1118                                 "vnfs, Vnf",
1119                                 "vfModules, VfModule",
1120                                 "networks, Network",
1121                                 "invalidNames, invalidNames");
1122                 items.forEach(item -> {
1123                         String[] split = item.split(",");
1124                         String type = split[0].trim();
1125                         String expected = split[1].trim();
1126                         assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
1127                 });
1128         }
1129         
1130         @Test
1131         public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
1132                 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1133                 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1134                 BuildingBlock bb = new BuildingBlock();
1135                 bb.setBpmnFlowName("AssignNetworkBB");
1136                 bb.setKey("0");
1137                 ebb.setBuildingBlock(bb);
1138                 executeFlows.add(ebb);
1139                 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1140                 BuildingBlock bb2 = new BuildingBlock();
1141                 bb2.setBpmnFlowName("AssignNetworkBB");
1142                 bb2.setKey("1");
1143                 ebb2.setBuildingBlock(bb2);
1144                 executeFlows.add(ebb2);
1145                 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1146                 BuildingBlock bb3 = new BuildingBlock();
1147                 bb3.setBpmnFlowName("CreateNetworkBB");
1148                 bb3.setKey("0");
1149                 ebb3.setBuildingBlock(bb3);
1150                 executeFlows.add(ebb3);
1151                 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1152                 BuildingBlock bb4 = new BuildingBlock();
1153                 bb4.setBpmnFlowName("CreateNetworkBB");
1154                 bb4.setKey("1");
1155                 ebb4.setBuildingBlock(bb4);
1156                 executeFlows.add(ebb4);
1157                 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1158                 BuildingBlock bb5 = new BuildingBlock();
1159                 bb5.setBpmnFlowName("ActivateNetworkBB");
1160                 bb5.setKey("0");
1161                 ebb5.setBuildingBlock(bb5);
1162                 executeFlows.add(ebb5);
1163                 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1164                 BuildingBlock bb6 = new BuildingBlock();
1165                 bb6.setBpmnFlowName("ActivateNetworkBB");
1166                 bb6.setKey("1");
1167                 ebb6.setBuildingBlock(bb6);
1168                 executeFlows.add(ebb6);
1169
1170                 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
1171                 assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1172                 assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1173                 assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1174                 assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"AssignNetworkBB");
1175                 assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"CreateNetworkBB");
1176                 assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"ActivateNetworkBB");
1177         }
1178         
1179         @Test
1180         public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
1181                 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
1182                 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
1183                 BuildingBlock bb = new BuildingBlock();
1184                 bb.setBpmnFlowName("DeactivateNetworkBB");
1185                 bb.setKey("0");
1186                 ebb.setBuildingBlock(bb);
1187                 executeFlows.add(ebb);
1188                 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
1189                 BuildingBlock bb2 = new BuildingBlock();
1190                 bb2.setBpmnFlowName("DeactivateNetworkBB");
1191                 bb2.setKey("1");
1192                 ebb2.setBuildingBlock(bb2);
1193                 executeFlows.add(ebb2);
1194                 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
1195                 BuildingBlock bb3 = new BuildingBlock();
1196                 bb3.setBpmnFlowName("DeleteNetworkBB");
1197                 bb3.setKey("0");
1198                 ebb3.setBuildingBlock(bb3);
1199                 executeFlows.add(ebb3);
1200                 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
1201                 BuildingBlock bb4 = new BuildingBlock();
1202                 bb4.setBpmnFlowName("DeleteNetworkBB");
1203                 bb4.setKey("1");
1204                 ebb4.setBuildingBlock(bb4);
1205                 executeFlows.add(ebb4);
1206                 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
1207                 BuildingBlock bb5 = new BuildingBlock();
1208                 bb5.setBpmnFlowName("UnassignNetworkBB");
1209                 bb5.setKey("0");
1210                 ebb5.setBuildingBlock(bb5);
1211                 executeFlows.add(ebb5);
1212                 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
1213                 BuildingBlock bb6 = new BuildingBlock();
1214                 bb6.setBpmnFlowName("UnassignNetworkBB");
1215                 bb6.setKey("1");
1216                 ebb6.setBuildingBlock(bb6);
1217                 executeFlows.add(ebb6);
1218                 
1219                 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
1220                 assertEquals(sorted.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1221                 assertEquals(sorted.get(1).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1222                 assertEquals(sorted.get(2).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1223                 assertEquals(sorted.get(3).getBuildingBlock().getBpmnFlowName(),"DeactivateNetworkBB");
1224                 assertEquals(sorted.get(4).getBuildingBlock().getBpmnFlowName(),"DeleteNetworkBB");
1225                 assertEquals(sorted.get(5).getBuildingBlock().getBpmnFlowName(),"UnassignNetworkBB");
1226         }
1227         @Test
1228         public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
1229                 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
1230                 List<OrchestrationFlow> orchFlows = new LinkedList<>();
1231                 OrchestrationFlow orch1 = new OrchestrationFlow();
1232                 orch1.setFlowName("AAICheckVnfInMaintBB");
1233                 orchFlows.add(orch1);
1234                 OrchestrationFlow orch2 = new OrchestrationFlow();
1235                 orch2.setFlowName("AAISetVnfInMaintBB");
1236                 orchFlows.add(orch2);
1237                 OrchestrationFlow orch3 = new OrchestrationFlow();
1238                 orch3.setFlowName("VNF-Macro-Replace");
1239                 orchFlows.add(orch3);
1240                 OrchestrationFlow orch4 = new OrchestrationFlow();
1241                 orch4.setFlowName("SDNOVnfHealthCheckBB");
1242                 orchFlows.add(orch4);
1243                 OrchestrationFlow orch5 = new OrchestrationFlow();
1244                 orch5.setFlowName("AAIUnsetVnfInMaintBB");
1245                 orchFlows.add(orch5);
1246                 northBoundRequest.setOrchestrationFlowList(orchFlows);
1247                 
1248                 List<OrchestrationFlow> macroFlows = new LinkedList<>();
1249                 OrchestrationFlow o1 = new OrchestrationFlow();
1250                 o1.setFlowName("DeactivateVfModuleBB");
1251                 macroFlows.add(o1);
1252                 OrchestrationFlow o2 = new OrchestrationFlow();
1253                 o2.setFlowName("DeleteVfModuleBB");
1254                 macroFlows.add(o2);
1255                 OrchestrationFlow o3 = new OrchestrationFlow();
1256                 o3.setFlowName("DeactivateVnfBB");
1257                 macroFlows.add(o3);
1258                 OrchestrationFlow o4 = new OrchestrationFlow();
1259                 o4.setFlowName("CreateVfModuleBB");
1260                 macroFlows.add(o4);
1261                 OrchestrationFlow o5 = new OrchestrationFlow();
1262                 o5.setFlowName("ActivateVfModuleBB");
1263                 macroFlows.add(o5);
1264                 OrchestrationFlow o6 = new OrchestrationFlow();
1265                 o6.setFlowName("ActivateVnfBB");
1266                 macroFlows.add(o6);
1267                 
1268                 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope("replaceInstance","Vnf",false)).thenReturn(northBoundRequest);
1269                 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
1270                 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false);
1271                 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
1272                 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
1273                 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
1274                 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
1275                 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");     
1276                 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");    
1277                 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");  
1278                 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");       
1279                 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
1280                 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
1281         }       
1282
1283         @Test
1284         public void extractResourceIdAndTypeFromUriTest(){
1285                 String uri = "/v6/serviceInstances/123";
1286                 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
1287                 String uri3 = "/v6/serviceInstances";
1288                 String uri4 = "/v6/serviceInstances/assign";
1289                 String uri5 = "'/v6/serviceInstances/123/vnfs";
1290                 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
1291                 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
1292                 
1293                 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
1294                 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
1295                 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
1296                 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1297                 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1298                 assertEquals(expected1.getResourceId(),result.getResourceId());
1299                 assertEquals(expected1.getResourceType(),result.getResourceType());
1300                 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1301                 assertEquals(expected2.getResourceId(),result.getResourceId());
1302                 assertEquals(expected2.getResourceType(),result.getResourceType());
1303                 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1304                 assertEquals("Service", result.getResourceType().toString());
1305                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1306                 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1307                 assertEquals("Service", result.getResourceType().toString());
1308                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1309                 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1310                 assertEquals("Vnf", result.getResourceType().toString());
1311                 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1312                 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1313                 assertEquals(expected3.getResourceId(),result.getResourceId());
1314                 assertEquals(expected3.getResourceType(),result.getResourceType());
1315                 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1316                 assertEquals(expected4.getResourceId(),result.getResourceId());
1317                 assertEquals(expected4.getResourceType(),result.getResourceType());
1318         }
1319         
1320         @Test
1321         public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1322                 this.expectedException.expect(IllegalArgumentException.class);
1323                 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1324                 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1325         }
1326         
1327         @Test
1328         public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1329                 this.expectedException.expect(IllegalArgumentException.class);
1330                 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1331                 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1332         }
1333         
1334         @Test
1335         public void populateResourceIdsFromApiHandlerTest(){
1336                 execution.setVariable("serviceInstanceId", "123");
1337                 execution.setVariable("vnfId", "888");
1338                 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1339                 assertEquals("123",x.getServiceInstanceId());
1340                 assertEquals("888",x.getVnfId());
1341                 assertNull(x.getVolumeGroupId());
1342         }
1343         
1344         @Test
1345         public void validateResourceIdInAAITest() throws Exception{
1346                 //SI
1347                 RequestDetails reqDetails = new RequestDetails();
1348                 SubscriberInfo subInfo = new SubscriberInfo();
1349                 subInfo.setGlobalSubscriberId("id123");
1350                 reqDetails.setSubscriberInfo(subInfo);
1351                 RequestParameters reqParams = new RequestParameters();
1352                 reqParams.setSubscriptionServiceType("subServiceType123");
1353                 reqDetails.setRequestParameters(reqParams );
1354                 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1355                 ServiceInstance si = new ServiceInstance();
1356                 si.setServiceInstanceId("siId123");
1357                 Optional<ServiceInstance> siOp = Optional.of(si);
1358                 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1359                 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1360                 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1361                 assertEquals("siId123",id);
1362                 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1363                 assertEquals("generatedId123",id2);
1364                 
1365                 //Network
1366                 L3Network network = new L3Network();
1367                 network.setNetworkId("id123");
1368                 network.setNetworkName("name123");
1369                 workflowResourceIds.setServiceInstanceId("siId123");
1370                 Optional<L3Network> opNetwork = Optional.of(network);
1371                 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1372                 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1373                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1374                 assertEquals("id123",id);
1375                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1376                 assertEquals("generatedId123",id2);
1377                 
1378                 //Vnf
1379                 GenericVnf vnf = new GenericVnf();
1380                 vnf.setVnfId("id123");
1381                 vnf.setVnfName("vnfName123");
1382                 Optional<GenericVnf> opVnf = Optional.of(vnf);
1383                 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1384                 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1385                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1386                 assertEquals("id123",id);
1387                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1388                 assertEquals("generatedId123",id2);
1389                 
1390                 //VfModule
1391                 VfModules vfModules = new VfModules();
1392                 VfModule vfModule = new VfModule();
1393                 vfModule.setVfModuleId("id123");
1394                 vfModule.setVfModuleName("name123");
1395                 vfModules.getVfModule().add(vfModule);
1396                 vnf.setVfModules(vfModules);
1397                 workflowResourceIds.setVnfId("id123");
1398                 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1399                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1400                 assertEquals("id123",id);
1401
1402                 GenericVnf vnf2 = new GenericVnf();
1403                 VfModules vfModules2 = new VfModules();
1404                 VfModule vfModule2 = new VfModule();
1405                 vfModule2.setVfModuleId("id123");
1406                 vfModule2.setVfModuleName("name123");
1407                 vfModules2.getVfModule().add(vfModule2);
1408                 vnf2.setVfModules(vfModules2);
1409                 workflowResourceIds.setVnfId("id111");
1410                 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1411                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1412                 assertEquals("generatedId123",id2);
1413                 
1414                 //VolumeGroup
1415                 VolumeGroup volumeGroup = new VolumeGroup();
1416                 volumeGroup.setVolumeGroupId("id123");
1417                 volumeGroup.setVolumeGroupName("name123");
1418                 workflowResourceIds.setVnfId("id123");
1419                 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1420                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1421                 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1422                 assertEquals("id123",id);
1423                 
1424                 workflowResourceIds.setVnfId("id444");
1425                 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1426                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123","111111")).thenReturn(opVolumeGroup);
1427                 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1428                 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1429                 assertEquals("id123",id2);
1430         }
1431         
1432         @Test
1433         public void handleRuntimeExceptionTest(){
1434                 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1435                 execution.setVariable("testProcessKey", "testProcessKeyValue");
1436                 try{
1437                         workflowAction.handleRuntimeException(execution);
1438                 } catch (BpmnError wfe) {
1439                         assertEquals("MSOWorkflowException",wfe.getErrorCode());
1440                 }
1441         }
1442         
1443         @Test
1444         public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1445                 execution.setVariable("testProcessKey", "testProcessKeyValue");
1446                 Service service = new Service();
1447                 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1448                 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1449                 networkCust.setModelCustomizationUUID("123");
1450                 networkCustomizations.add(networkCust);
1451                 service.setNetworkCustomizations(networkCustomizations);
1452                 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1453                 collectionResourceCustomization.setModelCustomizationUUID("123");
1454                 CollectionResource collectionResource = new CollectionResource();
1455                 collectionResource.setToscaNodeType("NetworkCollection");
1456                 InstanceGroup instanceGroup = new InstanceGroup();
1457                 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1458                 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1459                 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1460                 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1461                 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1462                 collectionResource.setInstanceGroup(instanceGroup);
1463                 collectionResourceCustomization.setCollectionResource(collectionResource);;
1464                 service.setModelUUID("abc");
1465                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1466                 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1467                 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1468                 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1469                 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1470                 ObjectMapper mapper = new ObjectMapper();
1471                 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1472                 List<Resource> resourceCounter = new ArrayList<>();
1473                 thrown.expect(BpmnError.class);
1474                 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1475         }
1476         
1477         @Test
1478         public void sortVfModulesByBaseFirstTest(){
1479                 List<Resource> resources = new ArrayList<>();
1480                 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1481                 resource1.setBaseVfModule(false);
1482                 resources.add(resource1);
1483                 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1484                 resource2.setBaseVfModule(false);
1485                 resources.add(resource2);
1486                 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1487                 resource3.setBaseVfModule(true);
1488                 resources.add(resource3);
1489                 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1490                 assertEquals("333",result.get(0).getResourceId());
1491                 assertEquals("222",result.get(1).getResourceId());
1492                 assertEquals("111",result.get(2).getResourceId());
1493         }
1494 }