ff1246bc46f787f298b6c4405ee0d581f710e7b8
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2020 Nokia
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
24
25 import org.camunda.bpm.engine.delegate.BpmnError;
26 import org.camunda.bpm.engine.delegate.DelegateExecution;
27 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
28 import org.junit.Before;
29 import org.junit.Rule;
30 import org.junit.Test;
31 import org.junit.rules.ExpectedException;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.Spy;
36 import org.onap.aai.domain.yang.Configuration;
37 import org.onap.aai.domain.yang.GenericVnf;
38 import org.onap.aai.domain.yang.InstanceGroup;
39 import org.onap.aai.domain.yang.L3Network;
40 import org.onap.aai.domain.yang.ServiceInstance;
41 import org.onap.aai.domain.yang.VfModule;
42 import org.onap.aai.domain.yang.VolumeGroup;
43 import org.onap.so.bpmn.BaseTaskTest;
44 import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulatorListenerRunner;
45 import org.onap.so.bpmn.core.WorkflowException;
46 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
47 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
48 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
49 import org.onap.so.db.request.beans.InfraActiveRequests;
50 import org.onap.so.serviceinstancebeans.ModelInfo;
51 import org.onap.so.serviceinstancebeans.RequestDetails;
52 import org.springframework.core.env.Environment;
53 import java.util.ArrayList;
54 import java.util.List;
55 import java.util.Optional;
56 import static org.junit.Assert.assertEquals;
57 import static org.junit.Assert.assertTrue;
58 import static org.mockito.ArgumentMatchers.anyObject;
59 import static org.mockito.ArgumentMatchers.anyString;
60 import static org.mockito.ArgumentMatchers.isA;
61 import static org.mockito.Mockito.doNothing;
62 import static org.mockito.Mockito.doReturn;
63 import static org.mockito.Mockito.when;
64
65 public class WorkflowActionBBTasksTest extends BaseTaskTest {
66
67     private static final String SAMPLE_MSO_REQUEST_ID = "00f704ca-c5e5-4f95-a72c-6889db7b0688";
68     private static final String SAMPLE_REQUEST_ACTION = "Delete-Network-Collection";
69     private static final int SAMPLE_SEQUENCE = 0;
70     @Mock
71     protected WorkflowAction workflowAction;
72
73     @Mock
74     protected WorkflowActionBBFailure workflowActionBBFailure;
75
76     @InjectMocks
77     @Spy
78     protected WorkflowActionBBTasks workflowActionBBTasks;
79
80     @Mock
81     InfraActiveRequests reqMock;
82
83     private DelegateExecution execution;
84
85     @Mock
86     protected Environment environment;
87
88     @Mock
89     private FlowManipulatorListenerRunner flowManipulatorListenerRunner;
90
91     @Rule
92     public ExpectedException thrown = ExpectedException.none();
93
94     @Before
95     public void before() throws Exception {
96         execution = new DelegateExecutionFake();
97         ServiceInstance servInstance = new ServiceInstance();
98         servInstance.setServiceInstanceId("TEST");
99         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
100         workflowAction.setBbInputSetupUtils(bbSetupUtils);
101         workflowAction.setBbInputSetup(bbInputSetup);
102     }
103
104     @Test
105     public void selectBBTest() {
106         String vnfCustomizationUUID = "1234567";
107         String modelUuid = "1234567";
108         prepareDelegateExecution();
109         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
110
111         BuildingBlock buildingBlock =
112                 new BuildingBlock().setBpmnFlowName("ConfigAssignVnfBB").setKey(vnfCustomizationUUID);
113         RequestDetails rd = new RequestDetails();
114         ModelInfo mi = new ModelInfo();
115         mi.setModelUuid(modelUuid);
116         rd.setModelInfo(mi);
117         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
118         flowsToExecute.add(ebb);
119
120         List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
121         VnfResourceCustomization vrc = new VnfResourceCustomization();
122         vrc.setSkipPostInstConf(false);
123         vrc.setModelCustomizationUUID(vnfCustomizationUUID);
124         vnfResourceCustomizations.add(vrc);
125         GenericVnf genericVnf = new GenericVnf();
126         genericVnf.setModelCustomizationId(vnfCustomizationUUID);
127         doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
128         doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
129                 vnfResourceCustomizations);
130
131         execution.setVariable("flowsToExecute", flowsToExecute);
132         workflowActionBBTasks.selectBB(execution);
133         boolean success = (boolean) execution.getVariable("completed");
134         int currentSequence = (int) execution.getVariable("gCurrentSequence");
135         assertTrue(success);
136         assertEquals(1, currentSequence);
137     }
138
139     @Test
140     public void select2BBTest() {
141         String vnfCustomizationUUID = "1234567";
142         String modelUuid = "1234567";
143
144         prepareDelegateExecution();
145         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
146         BuildingBlock buildingBlock =
147                 new BuildingBlock().setBpmnFlowName("ConfigDeployVnfBB").setKey(vnfCustomizationUUID);
148         RequestDetails rd = new RequestDetails();
149         ModelInfo mi = new ModelInfo();
150         mi.setModelUuid(modelUuid);
151         rd.setModelInfo(mi);
152         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
153         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
154
155         flowsToExecute.add(ebb);
156
157         List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
158         VnfResourceCustomization vrc = new VnfResourceCustomization();
159
160         vrc.setSkipPostInstConf(false);
161         vrc.setModelCustomizationUUID(vnfCustomizationUUID);
162         vnfResourceCustomizations.add(vrc);
163         GenericVnf genericVnf = new GenericVnf();
164         genericVnf.setModelCustomizationId(vnfCustomizationUUID);
165
166         doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
167         doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
168                 vnfResourceCustomizations);
169
170         flowsToExecute.add(ebb2);
171         execution.setVariable("flowsToExecute", flowsToExecute);
172         workflowActionBBTasks.selectBB(execution);
173         boolean success = (boolean) execution.getVariable("completed");
174         int currentSequence = (int) execution.getVariable("gCurrentSequence");
175         assertEquals(false, success);
176         assertEquals(1, currentSequence);
177     }
178
179     @Test
180     public void updateRequestStatusToCompleteTest() {
181         String reqId = "reqId123";
182         execution.setVariable("mso-request-id", reqId);
183         execution.setVariable("requestAction", "createInstance");
184         execution.setVariable("resourceName", "Service");
185         execution.setVariable("aLaCarte", true);
186         InfraActiveRequests req = new InfraActiveRequests();
187         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
188         doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
189         workflowActionBBTasks.updateRequestStatusToComplete(execution);
190         assertEquals("ALaCarte-Service-createInstance request was executed correctly.",
191                 execution.getVariable("finalStatusMessage"));
192     }
193
194     @Test
195     public void rollbackExecutionPathTest() {
196         execution.setVariable("handlingCode", "Rollback");
197         execution.setVariable("isRollback", false);
198         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
199         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
200         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
201         flowsToExecute.add(ebb1);
202
203         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
204         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
205         flowsToExecute.add(ebb2);
206
207         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
208         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
209         flowsToExecute.add(ebb3);
210
211         execution.setVariable("flowsToExecute", flowsToExecute);
212         execution.setVariable("gCurrentSequence", 3);
213         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
214
215         workflowActionBBTasks.rollbackExecutionPath(execution);
216         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
217         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateVfModuleBB");
218         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
219         assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
220         assertEquals(0, execution.getVariable("gCurrentSequence"));
221     }
222
223     @Test
224     public void rollbackExecutionPathUnfinishedFlowTest() {
225         execution.setVariable("handlingCode", "Rollback");
226         execution.setVariable("isRollback", false);
227         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
228         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
229         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
230         flowsToExecute.add(ebb1);
231
232         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
233         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
234         flowsToExecute.add(ebb2);
235
236         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
237         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
238         flowsToExecute.add(ebb3);
239
240         execution.setVariable("flowsToExecute", flowsToExecute);
241         execution.setVariable("gCurrentSequence", 2);
242         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
243
244         workflowActionBBTasks.rollbackExecutionPath(execution);
245         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
246         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
247         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
248         assertEquals(0, execution.getVariable("gCurrentSequence"));
249         assertEquals(0, execution.getVariable("retryCount"));
250     }
251
252     @Test
253     public void rollbackExecutionTest() {
254         execution.setVariable("handlingCode", "Rollback");
255         execution.setVariable("isRollback", false);
256         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
257         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
258         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
259         flowsToExecute.add(ebb1);
260
261         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateNetworkCollectionBB");
262         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
263         flowsToExecute.add(ebb2);
264
265         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB");
266         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
267         flowsToExecute.add(ebb3);
268
269         BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB");
270         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
271         flowsToExecute.add(ebb4);
272
273         execution.setVariable("flowsToExecute", flowsToExecute);
274         execution.setVariable("gCurrentSequence", 3);
275         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
276
277         workflowActionBBTasks.rollbackExecutionPath(execution);
278         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
279         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "UnassignNetworkBB");
280         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteNetworkCollectionBB");
281         assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignServiceInstanceBB");
282         assertEquals(0, execution.getVariable("gCurrentSequence"));
283     }
284
285     @Test
286     public void rollbackExecutionRollbackToAssignedTest() {
287         execution.setVariable("isRollback", false);
288         execution.setVariable("handlingCode", "RollbackToAssigned");
289         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
290
291         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
292         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
293         flowsToExecute.add(ebb1);
294
295         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
296         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
297         flowsToExecute.add(ebb2);
298
299         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
300         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
301         flowsToExecute.add(ebb3);
302
303         execution.setVariable("flowsToExecute", flowsToExecute);
304         execution.setVariable("gCurrentSequence", 2);
305
306         workflowActionBBTasks.rollbackExecutionPath(execution);
307         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
308         assertEquals("DeleteVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
309         assertEquals(0, execution.getVariable("gCurrentSequence"));
310         assertEquals(1, ebbs.size());
311     }
312
313     @Test
314     public void rollbackExecutionRollbackToAssignedWithFabricTest() {
315         execution.setVariable("isRollback", false);
316         execution.setVariable("handlingCode", "RollbackToAssigned");
317         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
318
319         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
320         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
321         flowsToExecute.add(ebb1);
322
323         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
324         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
325         flowsToExecute.add(ebb2);
326
327         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
328         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
329         flowsToExecute.add(ebb3);
330
331         BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("AssignFabricConfigurationBB");
332         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
333         flowsToExecute.add(ebb4);
334
335         BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("ActivateFabricConfigurationBB");
336         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
337         flowsToExecute.add(ebb5);
338
339         execution.setVariable("flowsToExecute", flowsToExecute);
340         execution.setVariable("gCurrentSequence", 5);
341
342         workflowActionBBTasks.rollbackExecutionPath(execution);
343         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
344         assertEquals(0, execution.getVariable("gCurrentSequence"));
345         assertEquals(4, ebbs.size());
346         assertEquals("DeactivateFabricConfigurationBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
347         assertEquals("UnassignFabricConfigurationBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
348         assertEquals("DeactivateVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
349         assertEquals("DeleteVfModuleBB", ebbs.get(3).getBuildingBlock().getBpmnFlowName());
350
351     }
352
353     @Test
354     public void rollbackExecutionRollbackToCreatedTest() {
355         execution.setVariable("isRollback", false);
356         execution.setVariable("handlingCode", "RollbackToCreated");
357         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
358         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
359         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
360         flowsToExecute.add(ebb1);
361
362         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
363         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
364         flowsToExecute.add(ebb2);
365
366         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
367         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
368         flowsToExecute.add(ebb3);
369
370         execution.setVariable("flowsToExecute", flowsToExecute);
371         execution.setVariable("gCurrentSequence", 3);
372
373         workflowActionBBTasks.rollbackExecutionPath(execution);
374         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
375         assertEquals("DeactivateVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
376         assertEquals(0, execution.getVariable("gCurrentSequence"));
377         assertEquals(1, ebbs.size());
378     }
379
380     @Test
381     public void checkRetryStatusTest() {
382         String reqId = "reqId123";
383         execution.setVariable("mso-request-id", reqId);
384         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
385         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
386         execution.setVariable("handlingCode", "Retry");
387         execution.setVariable("retryCount", 1);
388         execution.setVariable("gCurrentSequence", 1);
389         InfraActiveRequests req = new InfraActiveRequests();
390         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
391         workflowActionBBTasks.checkRetryStatus(execution);
392         assertEquals(0, execution.getVariable("gCurrentSequence"));
393     }
394
395     @Test
396     public void checkRetryStatusTestExceededMaxRetries() {
397         String reqId = "reqId123";
398         execution.setVariable("mso-request-id", reqId);
399         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
400         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
401         execution.setVariable("handlingCode", "Retry");
402         execution.setVariable("retryCount", 6);
403         execution.setVariable("gCurrentSequence", 1);
404         InfraActiveRequests req = new InfraActiveRequests();
405         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
406         try {
407             workflowActionBBTasks.checkRetryStatus(execution);
408         } catch (BpmnError e) {
409             WorkflowException exception = (WorkflowException) execution.getVariable("WorkflowException");
410             assertEquals("Exceeded maximum retries. Ending flow with status Abort", exception.getErrorMessage());
411         }
412     }
413
414     @Test
415     public void checkRetryStatusNoRetryTest() {
416         String reqId = "reqId123";
417         execution.setVariable("mso-request-id", reqId);
418         execution.setVariable("retryCount", 3);
419         execution.setVariable("handlingCode", "Success");
420         execution.setVariable("gCurrentSequence", 1);
421         InfraActiveRequests req = new InfraActiveRequests();
422         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
423         workflowActionBBTasks.checkRetryStatus(execution);
424         assertEquals(0, execution.getVariable("retryCount"));
425     }
426
427     @Test
428     public void updateInstanceId() {
429         String reqId = "req123";
430         String instanceId = "123123123";
431         execution.setVariable("mso-request-id", reqId);
432         execution.setVariable("resourceId", instanceId);
433         execution.setVariable("resourceType", WorkflowType.SERVICE);
434         doReturn(reqMock).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
435         doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
436         workflowActionBBTasks.updateInstanceId(execution);
437         Mockito.verify(reqMock, Mockito.times(1)).setServiceInstanceId(instanceId);
438     }
439
440     @Test
441     public void getConfigurationId() {
442         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
443         vnfc.setModelInvariantId("modelInvariantId");
444         vnfc.setVnfcName("testVnfcName");
445         List<Configuration> configurations = new ArrayList<>();
446         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
447         configuration.setConfigurationId("configurationId");
448         configuration.setModelCustomizationId("modelCustimizationId");
449         configuration.setConfigurationName("testConfigurationName");
450         configurations.add(configuration);
451         doReturn(configurations.get(0).getConfigurationId()).when(workflowActionBBTasks).getConfigurationId(vnfc);
452         assertEquals(workflowActionBBTasks.getConfigurationId(vnfc), "configurationId");
453     }
454
455     @Test
456     public void setServiceInstanceNameTest() {
457         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
458         WorkflowType resourceType = WorkflowType.SERVICE;
459         InfraActiveRequests request = new InfraActiveRequests();
460         ServiceInstance service = new ServiceInstance();
461         service.setServiceInstanceName("serviceInstanceName");
462         doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
463
464         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
465         assertEquals("serviceInstanceName", request.getServiceInstanceName());
466     }
467
468     @Test
469     public void setVnfNameTest() {
470         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
471         WorkflowType resourceType = WorkflowType.VNF;
472         InfraActiveRequests request = new InfraActiveRequests();
473         GenericVnf vnf = new GenericVnf();
474         vnf.setVnfName("vnfName");
475         doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf(resourceId);
476
477         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
478         assertEquals("vnfName", request.getVnfName());
479     }
480
481     @Test
482     public void setVfModuleNameTest() {
483         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
484         WorkflowType resourceType = WorkflowType.VFMODULE;
485         InfraActiveRequests request = new InfraActiveRequests();
486         request.setVnfId("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e");
487         VfModule vfModule = new VfModule();
488         vfModule.setVfModuleName("vfModuleName");
489         doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e", resourceId);
490
491         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
492         assertEquals("vfModuleName", request.getVfModuleName());
493     }
494
495     @Test
496     public void setNetworkNameTest() {
497         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
498         WorkflowType resourceType = WorkflowType.NETWORK;
499         InfraActiveRequests request = new InfraActiveRequests();
500         L3Network network = new L3Network();
501         network.setNetworkName("networkName");
502         doReturn(network).when(bbSetupUtils).getAAIL3Network(resourceId);
503
504         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
505         assertEquals("networkName", request.getNetworkName());
506     }
507
508     @Test
509     public void setConfigurationNameTest() {
510         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
511         WorkflowType resourceType = WorkflowType.CONFIGURATION;
512         InfraActiveRequests request = new InfraActiveRequests();
513         Configuration configuration = new Configuration();
514         configuration.setConfigurationName("configurationName");
515         doReturn(configuration).when(bbSetupUtils).getAAIConfiguration(resourceId);
516
517         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
518         assertEquals("configurationName", request.getConfigurationName());
519     }
520
521     @Test
522     public void setInstanceGroupNameTest() {
523         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
524         WorkflowType resourceType = WorkflowType.INSTANCE_GROUP;
525         InfraActiveRequests request = new InfraActiveRequests();
526         InstanceGroup instanceGroup = new InstanceGroup();
527         instanceGroup.setInstanceGroupName("instanceGroupName");
528         doReturn(instanceGroup).when(bbSetupUtils).getAAIInstanceGroup(resourceId);
529
530         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
531         assertEquals("instanceGroupName", request.getInstanceGroupName());
532     }
533
534     @Test
535     public void setVolumeGroupNameTest() {
536         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
537         WorkflowType resourceType = WorkflowType.VOLUMEGROUP;
538         InfraActiveRequests request = new InfraActiveRequests();
539         request.setVnfId("4aa72c90-21eb-4465-8847-997e27af6c3e");
540         VolumeGroup volumeGroup = new VolumeGroup();
541         volumeGroup.setVolumeGroupName("volumeGroupName");
542         Optional<VolumeGroup> returnVolumeGroup = Optional.of(volumeGroup);
543
544         doReturn(returnVolumeGroup).when(bbSetupUtils).getRelatedVolumeGroupByIdFromVnf(request.getVnfId(), resourceId);
545         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
546
547         assertEquals("volumeGroupName", request.getVolumeGroupName());
548     }
549
550     private void prepareDelegateExecution() {
551         execution.setVariable("mso-request-id", SAMPLE_MSO_REQUEST_ID);
552         execution.setVariable("requestAction", SAMPLE_REQUEST_ACTION);
553         execution.setVariable("gCurrentSequence", SAMPLE_SEQUENCE);
554         execution.setVariable("homing", false);
555         execution.setVariable("calledHoming", false);
556     }
557 }