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;