1 package org.onap.so.bpmn.infrastructure.workflow.tasks;
3 import static org.hamcrest.CoreMatchers.is;
4 import static org.junit.Assert.assertThat;
5 import static org.mockito.Matchers.any;
6 import static org.mockito.Matchers.anyBoolean;
7 import static org.mockito.Matchers.eq;
8 import static org.mockito.Mockito.doReturn;
9 import static org.mockito.Mockito.mock;
10 import static org.mockito.Mockito.never;
11 import static org.mockito.Mockito.times;
12 import static org.mockito.Mockito.verify;
13 import static org.mockito.Mockito.when;
15 import java.io.IOException;
16 import java.nio.file.Files;
17 import java.nio.file.Paths;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.Collections;
21 import java.util.List;
23 import org.camunda.bpm.engine.delegate.DelegateExecution;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26 import org.mockito.InjectMocks;
27 import org.mockito.Mock;
28 import org.mockito.Spy;
29 import org.mockito.runners.MockitoJUnitRunner;
30 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
31 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
32 import org.onap.so.client.exception.ExceptionBuilder;
33 import org.onap.so.client.orchestration.AAIConfigurationResources;
34 import org.onap.so.db.catalog.beans.ConfigurationResource;
35 import org.onap.so.db.catalog.beans.CvnfcCustomization;
36 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
37 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
38 import org.onap.so.db.catalog.client.CatalogDbClient;
40 @RunWith(MockitoJUnitRunner.class)
41 public class WorkflowActionUnitTest {
43 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/Macro/";
46 private CatalogDbClient catalogDbClient;
48 private BBInputSetup bbInputSetup;
50 private BBInputSetupUtils bbInputSetupUtils;
52 private ExceptionBuilder exceptionBuilder;
54 private AAIConfigurationResources aaiConfigurationResources;
58 private WorkflowAction workflowAction;
61 public void filterOrchFlowsHasFabricTest() {
63 List<OrchestrationFlow> flows = createFlowList(
64 "DeactivateFabricConfigurationBB",
67 "ActivateFabricConfigurationBB",
69 doReturn(Arrays.asList("yes", "yes")).when(workflowAction).traverseCatalogDbForConfiguration(any(String.class), any(String.class));
71 List<OrchestrationFlow> result = workflowAction.filterOrchFlows(flows, WorkflowType.VFMODULE, mock(DelegateExecution.class));
73 assertThat(result, is(flows));
77 public void filterOrchFlowNoFabricTest() {
78 List<OrchestrationFlow> flows = createFlowList(
79 "DeactivateFabricConfigurationBB",
82 "ActivateFabricConfigurationBB",
84 doReturn(Arrays.asList()).when(workflowAction).traverseCatalogDbForConfiguration(any(String.class), any(String.class));
86 List<OrchestrationFlow> result = workflowAction.filterOrchFlows(flows, WorkflowType.VFMODULE, mock(DelegateExecution.class));
87 List<OrchestrationFlow> expected = createFlowList(
92 assertThat(result, is(expected));
96 public void traverseCatalogDbForConfigurationTest() {
98 CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
99 VnfVfmoduleCvnfcConfigurationCustomization vfModuleCustomization = new VnfVfmoduleCvnfcConfigurationCustomization();
100 ConfigurationResource configuration = new ConfigurationResource();
101 configuration.setToscaNodeType("FabricConfiguration");
102 configuration.setModelUUID("my-uuid");
103 vfModuleCustomization.setConfigurationResource(configuration);
104 cvnfcCustomization.setVnfVfmoduleCvnfcConfigurationCustomization(Collections.singleton(vfModuleCustomization));
105 List<CvnfcCustomization> cvnfcCustomizations = Arrays.asList(cvnfcCustomization);
106 when(catalogDbClient.getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID(any(String.class), any(String.class)))
107 .thenReturn(cvnfcCustomizations);
109 List<String> results = workflowAction.traverseCatalogDbForConfiguration("myVnfCustomizationId", "myVfModuleCustomizationId");
111 assertThat(results, is(Arrays.asList("my-uuid")));
116 public void verifyFilterOrchInvocation() throws Exception {
117 DelegateExecution execution = mock(DelegateExecution.class);
119 when(execution.getVariable(eq("aLaCarte"))).thenReturn(true);
120 when(execution.getVariable(eq("bpmnRequest"))).thenReturn(getJson("ServiceMacroAssign.json"));
121 when(execution.getVariable(eq("requestUri"))).thenReturn("/v6/serviceInstances/123/vnfs/1234");
123 OrchestrationFlow flow = new OrchestrationFlow();
124 flow.setFlowName("flow x");
126 List<OrchestrationFlow> flows = Arrays.asList(flow);
127 doReturn(Arrays.asList(flow)).when(workflowAction).queryNorthBoundRequestCatalogDb(any(), any(), any(), anyBoolean());
128 workflowAction.selectExecutionList(execution);
130 verify(workflowAction, times(1)).filterOrchFlows(eq(flows), any(), any());
132 flow = new OrchestrationFlow();
133 flow.setFlowName("flow y");
134 flows = Arrays.asList(flow);
135 when(execution.getVariable(eq("aLaCarte"))).thenReturn(false);
136 workflowAction.selectExecutionList(execution);
138 verify(workflowAction, never()).filterOrchFlows(eq(flows), any(), any());
142 private String getJson(String filename) throws IOException {
143 return new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + filename)));
146 private List<OrchestrationFlow> createFlowList(String... myList) {
148 List<OrchestrationFlow> result = new ArrayList<>();
149 for (String name : myList) {
150 OrchestrationFlow flow = new OrchestrationFlow();
151 flow.setFlowName(name);