Change nexus values to properties
[appc.git] / app-c / appc / appc-dispatcher / appc-workflow-management / appc-workflow-management-core / src / test / java / org / openecomp / appc / workflow / TestWorkFlowManager.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : APP-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                                              reserved.
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
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
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=========================================================
20  */
21
22 package org.openecomp.appc.workflow;
23
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;
41
42 @RunWith(PowerMockRunner.class)
43 @PrepareForTest( {SvcLogicActivator.class, FrameworkUtil.class, WorkFlowManagerImpl.class} )
44 public class TestWorkFlowManager {
45     public TestWorkFlowManager() {
46     }
47
48     private WorkFlowManagerImpl workflowManger ;
49     private String command="Configure";
50     protected SvcLogicGraph svcLogicGraph=null;
51
52
53     //
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);
58
59
60
61     @Before
62     public void setupMock() throws Exception {
63         /*
64         // DAO Mock
65         dao = Mockito.mock(AppcDAOImpl.class);
66         PowerMockito.whenNew(AppcDAOImpl.class).withNoArguments().thenReturn(dao);
67
68         // SVC Logic Mock
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);
77
78         try {
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) {
89             e.printStackTrace();
90         }
91
92         workflowManger = new WorkFlowManagerImpl();
93
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());
97          */
98     }
99
100     @Test
101     public void testEmptyVnfTypeFlow(){
102         /*
103         WorkflowRequest workflowRequest = getWorkflowRequest("","1","1",command);
104         setSvcLogicGraph(createGraph(""+"_"+command));
105         WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
106         assertFalse(response.isExecutionSuccess());
107          */
108     }
109
110     /*
111     @Test
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());
118     }
119
120     @Test
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());
128     }
129
130     @Test
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);
135         assertTrue(success);
136     }
137
138     @Test
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);
145     }
146
147
148     @Test
149     public void testEmptyCommandFlow(){
150         WorkflowRequest workflowRequest = getWorkflowRequest("FIREWALL","1","1","");
151         WorkflowResponse response =workflowManger.executeWorkflow(workflowRequest);
152         assertFalse(response.isExecutionSuccess());
153     }
154      */
155
156
157     public void setSvcLogicGraph(SvcLogicGraph svcLogicGraph) {
158         this.svcLogicGraph = svcLogicGraph;
159     }
160
161     public SvcLogicGraph getSvcLogicGraph() {
162         return svcLogicGraph;
163     }
164
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);
174         try {
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) {
181             e.printStackTrace();
182         }
183         svcLogicGraph.setRootNode(svcLogicRootNode);
184         return svcLogicGraph;
185     }
186 }