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