2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.openecomp.appc.workflow;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.Mockito;
28 import org.openecomp.appc.workflow.impl.WorkFlowManagerImpl;
29 import org.openecomp.appc.workflow.objects.WorkflowRequest;
30 import org.openecomp.sdnc.sli.SvcLogicException;
31 import org.openecomp.sdnc.sli.SvcLogicGraph;
32 import org.openecomp.sdnc.sli.SvcLogicNode;
33 import org.openecomp.sdnc.sli.SvcLogicStore;
34 import org.openecomp.sdnc.sli.provider.SvcLogicActivator;
35 import org.osgi.framework.Bundle;
36 import org.osgi.framework.BundleContext;
37 import org.osgi.framework.FrameworkUtil;
38 import org.osgi.framework.ServiceReference;
39 import org.powermock.core.classloader.annotations.PrepareForTest;
40 import org.powermock.modules.junit4.PowerMockRunner;
42 @RunWith(PowerMockRunner.class)
43 @PrepareForTest( {SvcLogicActivator.class, FrameworkUtil.class, WorkFlowManagerImpl.class} )
44 public class TestWorkFlowManager {
45 public TestWorkFlowManager() {
48 private WorkFlowManagerImpl workflowManger ;
49 private String command="Configure";
50 protected SvcLogicGraph svcLogicGraph=null;
54 private final SvcLogicStore svcLogicStore= Mockito.mock(SvcLogicStore.class);
55 private final BundleContext bundleContext=Mockito.mock(BundleContext.class);
56 private final Bundle bundleSvcLogicService=Mockito.mock(Bundle.class);
57 private final ServiceReference serviceReferenceSvcLogicService=Mockito.mock(ServiceReference.class);
62 public void setupMock() throws Exception {
65 dao = Mockito.mock(AppcDAOImpl.class);
66 PowerMockito.whenNew(AppcDAOImpl.class).withNoArguments().thenReturn(dao);
69 SvcLogicServiceImpl svcLogicService=new SvcLogicServiceImpl();
70 PowerMockito.mockStatic(SvcLogicActivator.class);
71 PowerMockito.mockStatic(FrameworkUtil.class);
72 PowerMockito.when(SvcLogicActivator.getStore()).thenReturn(svcLogicStore);
73 PowerMockito.when(FrameworkUtil.getBundle(SvcLogicService.class)).thenReturn(bundleSvcLogicService);
74 PowerMockito.when(bundleSvcLogicService.getBundleContext()).thenReturn(bundleContext);
75 PowerMockito.when(bundleContext.getServiceReference(SvcLogicService.NAME)).thenReturn(serviceReferenceSvcLogicService);
76 PowerMockito.when(bundleContext.getService(serviceReferenceSvcLogicService)).thenReturn(svcLogicService);
79 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Configure"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Configure"));
80 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Restart"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Restart"));
81 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Test"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Test"));
82 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Rebuild"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Rebuild"));
83 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Terminate"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Terminate"));
84 PowerMockito.when(svcLogicStore.fetch(anyString(), eq("FIREWALL_Start"), anyString(), anyString())).thenReturn(createGraph("FIREWALL_Start"));
85 svcLogicService.registerExecutor("switch", new SwitchNodeExecutor());
86 svcLogicService.registerExecutor("execute",new ReturnNodeExecutor());
87 svcLogicService.registerExecutor("return",new ReturnNodeExecutor());
88 } catch (SvcLogicException e) {
92 workflowManger = new WorkFlowManagerImpl();
94 PowerMockito.when(getDao().retrieveWorkflowDetails("FIREWALL","Configure")).thenReturn(getWorkflow());
95 PowerMockito.when(getDao().retrieveWorkflowDetails("FIREWALL","")).thenThrow(new DAOException());
96 PowerMockito.when(getDao().retrieveWorkflowDetails("","Configure")).thenThrow(new DAOException());
101 public void testEmptyVnfTypeFlow(){
103 WorkflowRequest workflowRequest = getWorkflowRequest("","1","1",command);
104 setSvcLogicGraph(createGraph(""+"_"+command));
105 WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
106 assertFalse(response.isExecutionSuccess());
112 public void testExecuteWorkflow(){
113 //PowerMockito.when(getDao().retrieveWorkflowDetails(anyString(),anyString())).thenReturn(getWorkflow());
114 WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1",command);
115 setSvcLogicGraph(createGraph("FIREWALL"+"_"+command));
116 WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
117 assertFalse(response.isExecutionSuccess());
121 public void testExecuteWorkflowEmptyPayload(){
122 //PowerMockito.when(getDao().retrieveWorkflowDetails(anyString(),anyString())).thenReturn(getWorkflow());
123 WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1",command);
124 workflowRequest.setPayload("{payload:\"payload\"}");
125 setSvcLogicGraph(createGraph(""+"_"+command));
126 WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
127 assertFalse(response.isExecutionSuccess());
131 public void testWorkflowExist(){
132 //PowerMockito.when(getDao().queryWorkflow(anyString(),anyString())).thenReturn(true);
133 WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1",command);
134 boolean success = workflowManger.workflowExists(workflowRequest);
139 public void testWorkflowExistFalse(){
140 //PowerMockito.when(getDao().queryWorkflow(anyString(),anyString())).thenReturn(false);
141 WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1",command);
142 setSvcLogicGraph(createGraph(""+"_"+command));
143 boolean success = workflowManger.workflowExists(workflowRequest);
144 assertFalse(success);
149 public void testEmptyCommandFlow(){
150 WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1","");
151 WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
152 assertFalse(response.isExecutionSuccess());
157 public void setSvcLogicGraph(SvcLogicGraph svcLogicGraph) {
158 this.svcLogicGraph = svcLogicGraph;
161 public SvcLogicGraph getSvcLogicGraph() {
162 return svcLogicGraph;
165 protected SvcLogicGraph createGraph(String rpc) {
166 SvcLogicGraph svcLogicGraph = new SvcLogicGraph();
167 svcLogicGraph.setModule("APPC");
168 svcLogicGraph.setRpc(rpc);
169 svcLogicGraph.setMode("sync");
170 svcLogicGraph.setVersion("2.0.0");
171 SvcLogicNode svcLogicRootNode = new SvcLogicNode(1, "switch", svcLogicGraph);
172 SvcLogicNode svcLogicConfigureNode = new SvcLogicNode(2, "return", svcLogicGraph);
173 SvcLogicNode svcLogicOtherNode = new SvcLogicNode(3, "return", svcLogicGraph);
175 svcLogicConfigureNode.setAttribute("status", "success");
176 svcLogicOtherNode.setAttribute("status", "failure");
177 svcLogicRootNode.setAttribute("test", "$org.openecomp.appc.action");
178 svcLogicRootNode.addOutcome("Configure", svcLogicConfigureNode);
179 svcLogicRootNode.addOutcome("Other", svcLogicOtherNode);
180 } catch (SvcLogicException e) {
183 svcLogicGraph.setRootNode(svcLogicRootNode);
184 return svcLogicGraph;