Merge "Added support for volume group request to"
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / WorkflowActionBBTasksTest.java
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("AddFabricConfigurationBB");
332         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
333         flowsToExecute.add(ebb4);
334
335         execution.setVariable("flowsToExecute", flowsToExecute);
336         execution.setVariable("gCurrentSequence", 4);
337
338         workflowActionBBTasks.rollbackExecutionPath(execution);
339         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
340         assertEquals(0, execution.getVariable("gCurrentSequence"));
341         assertEquals(3, ebbs.size());
342         assertEquals("DeleteFabricConfigurationBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
343         assertEquals("DeactivateVfModuleBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
344         assertEquals("DeleteVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
345
346     }
347
348     @Test
349     public void rollbackExecutionRollbackToCreatedTest() {
350         execution.setVariable("isRollback", false);
351         execution.setVariable("handlingCode", "RollbackToCreated");
352         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
353         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
354         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
355         flowsToExecute.add(ebb1);
356
357         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
358         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
359         flowsToExecute.add(ebb2);
360
361         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
362         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
363         flowsToExecute.add(ebb3);
364
365         execution.setVariable("flowsToExecute", flowsToExecute);
366         execution.setVariable("gCurrentSequence", 3);
367
368         workflowActionBBTasks.rollbackExecutionPath(execution);
369         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
370         assertEquals("DeactivateVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
371         assertEquals(0, execution.getVariable("gCurrentSequence"));
372         assertEquals(1, ebbs.size());
373     }
374
375     @Test
376     public void checkRetryStatusTest() {
377         String reqId = "reqId123";
378         execution.setVariable("mso-request-id", reqId);
379         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
380         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
381         execution.setVariable("handlingCode", "Retry");
382         execution.setVariable("retryCount", 1);
383         execution.setVariable("gCurrentSequence", 1);
384         InfraActiveRequests req = new InfraActiveRequests();
385         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
386         workflowActionBBTasks.checkRetryStatus(execution);
387         assertEquals(0, execution.getVariable("gCurrentSequence"));
388     }
389
390     @Test
391     public void checkRetryStatusTestExceededMaxRetries() {
392         String reqId = "reqId123";
393         execution.setVariable("mso-request-id", reqId);
394         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
395         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
396         execution.setVariable("handlingCode", "Retry");
397         execution.setVariable("retryCount", 6);
398         execution.setVariable("gCurrentSequence", 1);
399         InfraActiveRequests req = new InfraActiveRequests();
400         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
401         try {
402             workflowActionBBTasks.checkRetryStatus(execution);
403         } catch (BpmnError e) {
404             WorkflowException exception = (WorkflowException) execution.getVariable("WorkflowException");
405             assertEquals("Exceeded maximum retries. Ending flow with status Abort", exception.getErrorMessage());
406         }
407     }
408
409     @Test
410     public void checkRetryStatusNoRetryTest() {
411         String reqId = "reqId123";
412         execution.setVariable("mso-request-id", reqId);
413         execution.setVariable("retryCount", 3);
414         execution.setVariable("handlingCode", "Success");
415         execution.setVariable("gCurrentSequence", 1);
416         InfraActiveRequests req = new InfraActiveRequests();
417         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
418         workflowActionBBTasks.checkRetryStatus(execution);
419         assertEquals(0, execution.getVariable("retryCount"));
420     }
421
422     @Test
423     public void updateInstanceId() {
424         String reqId = "req123";
425         String instanceId = "123123123";
426         execution.setVariable("mso-request-id", reqId);
427         execution.setVariable("resourceId", instanceId);
428         execution.setVariable("resourceType", WorkflowType.SERVICE);
429         doReturn(reqMock).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
430         doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
431         workflowActionBBTasks.updateInstanceId(execution);
432         Mockito.verify(reqMock, Mockito.times(1)).setServiceInstanceId(instanceId);
433     }
434
435     @Test
436     public void getConfigurationId() {
437         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
438         vnfc.setModelInvariantId("modelInvariantId");
439         vnfc.setVnfcName("testVnfcName");
440         List<Configuration> configurations = new ArrayList<>();
441         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
442         configuration.setConfigurationId("configurationId");
443         configuration.setModelCustomizationId("modelCustimizationId");
444         configuration.setConfigurationName("testConfigurationName");
445         configurations.add(configuration);
446         doReturn(configurations.get(0).getConfigurationId()).when(workflowActionBBTasks).getConfigurationId(vnfc);
447         assertEquals(workflowActionBBTasks.getConfigurationId(vnfc), "configurationId");
448     }
449
450     @Test
451     public void setServiceInstanceNameTest() {
452         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
453         WorkflowType resourceType = WorkflowType.SERVICE;
454         InfraActiveRequests request = new InfraActiveRequests();
455         ServiceInstance service = new ServiceInstance();
456         service.setServiceInstanceName("serviceInstanceName");
457         doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
458
459         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
460         assertEquals("serviceInstanceName", request.getServiceInstanceName());
461     }
462
463     @Test
464     public void setVnfNameTest() {
465         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
466         WorkflowType resourceType = WorkflowType.VNF;
467         InfraActiveRequests request = new InfraActiveRequests();
468         GenericVnf vnf = new GenericVnf();
469         vnf.setVnfName("vnfName");
470         doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf(resourceId);
471
472         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
473         assertEquals("vnfName", request.getVnfName());
474     }
475
476     @Test
477     public void setVfModuleNameTest() {
478         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
479         WorkflowType resourceType = WorkflowType.VFMODULE;
480         InfraActiveRequests request = new InfraActiveRequests();
481         request.setVnfId("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e");
482         VfModule vfModule = new VfModule();
483         vfModule.setVfModuleName("vfModuleName");
484         doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e", resourceId);
485
486         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
487         assertEquals("vfModuleName", request.getVfModuleName());
488     }
489
490     @Test
491     public void setNetworkNameTest() {
492         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
493         WorkflowType resourceType = WorkflowType.NETWORK;
494         InfraActiveRequests request = new InfraActiveRequests();
495         L3Network network = new L3Network();
496         network.setNetworkName("networkName");
497         doReturn(network).when(bbSetupUtils).getAAIL3Network(resourceId);
498
499         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
500         assertEquals("networkName", request.getNetworkName());
501     }
502
503     @Test
504     public void setConfigurationNameTest() {
505         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
506         WorkflowType resourceType = WorkflowType.CONFIGURATION;
507         InfraActiveRequests request = new InfraActiveRequests();
508         Configuration configuration = new Configuration();
509         configuration.setConfigurationName("configurationName");
510         doReturn(configuration).when(bbSetupUtils).getAAIConfiguration(resourceId);
511
512         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
513         assertEquals("configurationName", request.getConfigurationName());
514     }
515
516     @Test
517     public void setInstanceGroupNameTest() {
518         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
519         WorkflowType resourceType = WorkflowType.INSTANCE_GROUP;
520         InfraActiveRequests request = new InfraActiveRequests();
521         InstanceGroup instanceGroup = new InstanceGroup();
522         instanceGroup.setInstanceGroupName("instanceGroupName");
523         doReturn(instanceGroup).when(bbSetupUtils).getAAIInstanceGroup(resourceId);
524
525         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
526         assertEquals("instanceGroupName", request.getInstanceGroupName());
527     }
528
529     @Test
530     public void setVolumeGroupNameTest() {
531         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
532         WorkflowType resourceType = WorkflowType.VOLUMEGROUP;
533         InfraActiveRequests request = new InfraActiveRequests();
534         request.setVnfId("4aa72c90-21eb-4465-8847-997e27af6c3e");
535         VolumeGroup volumeGroup = new VolumeGroup();
536         volumeGroup.setVolumeGroupName("volumeGroupName");
537         Optional<VolumeGroup> returnVolumeGroup = Optional.of(volumeGroup);
538
539         doReturn(returnVolumeGroup).when(bbSetupUtils).getRelatedVolumeGroupByIdFromVnf(request.getVnfId(), resourceId);
540         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
541
542         assertEquals("volumeGroupName", request.getVolumeGroupName());
543     }
544
545     private void prepareDelegateExecution() {
546         execution.setVariable("mso-request-id", SAMPLE_MSO_REQUEST_ID);
547         execution.setVariable("requestAction", SAMPLE_REQUEST_ACTION);
548         execution.setVariable("gCurrentSequence", SAMPLE_SEQUENCE);
549         execution.setVariable("homing", false);
550         execution.setVariable("calledHoming", false);
551     }
552 }