5e390da534d131f5732bc1932992b98f5ba1d99f
[policy/engine.git] / POLICY-SDK-APP / src / test / java / org / onap / policy / controller / AutoPushControllerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
4  * ================================================================================
5  * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (C) 2019 Samsung
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.policy.controller;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.fail;
27 import static org.mockito.Matchers.any;
28 import static org.mockito.Mockito.atLeast;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
31
32 import com.att.research.xacml.api.pap.PAPException;
33 import com.mockrunner.mock.web.MockHttpServletRequest;
34 import com.mockrunner.mock.web.MockHttpServletResponse;
35 import java.io.IOException;
36 import java.util.ArrayList;
37 import java.util.HashSet;
38 import java.util.List;
39 import java.util.Set;
40 import javax.servlet.http.HttpServletRequest;
41 import javax.servlet.http.HttpServletResponse;
42 import javax.servlet.http.HttpSession;
43 import org.junit.BeforeClass;
44 import org.junit.Rule;
45 import org.junit.Test;
46 import org.junit.rules.ExpectedException;
47 import org.junit.runner.RunWith;
48 import org.mockito.Mockito;
49 import org.onap.policy.model.Roles;
50 import org.onap.policy.xacml.api.pap.OnapPDPGroup;
51 import org.onap.policy.xacml.api.pap.PAPPolicyEngine;
52 import org.onap.portalsdk.core.domain.User;
53 import org.onap.portalsdk.core.web.support.AppUtils;
54 import org.onap.portalsdk.core.web.support.UserUtils;
55 import org.powermock.api.mockito.PowerMockito;
56 import org.powermock.core.classloader.annotations.PrepareForTest;
57 import org.powermock.modules.junit4.PowerMockRunner;
58
59 @RunWith(PowerMockRunner.class)
60 public class AutoPushControllerTest {
61     private PolicyController controller = new PolicyController();
62     private AutoPushController apController = new AutoPushController();
63
64     private static HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
65     private static HttpServletResponse mockResponse = Mockito.mock(HttpServletResponse.class);
66     private static PolicyController mockPolicyController = Mockito.mock(PolicyController.class);
67     private static HttpSession mockSession = Mockito.mock(HttpSession.class);
68     private static User mockUser = Mockito.mock(User.class);
69     private static List<Object> rolesList = new ArrayList<>();
70
71     @Rule
72     public ExpectedException thrown = ExpectedException.none();
73
74     @BeforeClass
75     public static void setupMocks() {
76         when(mockRequest.getSession(false)).thenReturn(mockSession);
77         when(AppUtils.getSession(mockRequest)).thenReturn(mockSession);
78         when(UserUtils.getUserSession(mockRequest)).thenReturn(mockUser);
79         when(mockUser.getOrgUserId()).thenReturn("");
80         when(mockPolicyController.getRoles(any(String.class))).thenReturn(rolesList);
81     }
82
83     @Test
84     public void testAutoPushSetGet() throws IOException {
85         apController.setPolicyController(controller);
86         assertEquals(apController.getPolicyController(), controller);
87     }
88
89     @Test
90     public void testNegativeCase1() {
91         try {
92             apController.getPolicyGroupContainerData(null, null);
93         } catch (Exception ex) {
94             fail("No exceptions expected, received: " + ex);
95         }
96     }
97
98     @Test
99     public void testNegativeCase2() throws IOException {
100         thrown.expect(NullPointerException.class);
101         apController.pushPolicyToPDPGroup(null, null);
102     }
103
104     @Test
105     public void testNegativeCase3() throws IOException {
106         thrown.expect(NullPointerException.class);
107         apController.removePDPGroup(null, null);
108     }
109
110     @Test(expected = NullPointerException.class)
111     public void testRefreshGroupsNull() throws IOException {
112         apController.refreshGroups();
113     }
114
115     @PrepareForTest({UserUtils.class})
116     @Test
117     public void testRequests() throws Exception {
118         // Mock user utilities
119         PowerMockito.mockStatic(UserUtils.class);
120         User user = new User();
121         Mockito.when(UserUtils.getUserSession(Mockito.any())).thenReturn(user);
122
123         // Mock policy controller
124         PolicyController policyController = Mockito.mock(PolicyController.class);
125         PowerMockito.whenNew(PolicyController.class).withNoArguments().thenReturn(policyController);
126         Mockito.when(policyController.getRoles(Mockito.any())).thenReturn(null);
127
128         // Test group container
129         MockHttpServletRequest request = new MockHttpServletRequest();
130         MockHttpServletResponse response = new MockHttpServletResponse();
131         apController.getPolicyGroupContainerData(request, response);
132         assertEquals(HttpServletResponse.SC_OK, response.getStatusCode());
133
134         // Test push
135         apController.pushPolicyToPDPGroup(request, response);
136         assertEquals(HttpServletResponse.SC_OK, response.getStatusCode());
137
138         // Test remove
139         apController.removePDPGroup(request, response);
140         assertEquals(HttpServletResponse.SC_OK, response.getStatusCode());
141     }
142
143     @Test
144     public void testRefreshGroupsSuccess() throws PAPException {
145         PolicyController mockPolicyController = Mockito.mock(PolicyController.class);
146         PAPPolicyEngine mockPAPPolicyEngine = Mockito.mock(PAPPolicyEngine.class);
147         Set<OnapPDPGroup> onapPDPGroups = new HashSet<>();
148         when(mockPolicyController.getPapEngine()).thenReturn(mockPAPPolicyEngine);
149         when(mockPAPPolicyEngine.getOnapPDPGroups()).thenReturn(onapPDPGroups);
150         apController.setPolicyController(mockPolicyController);
151         apController.refreshGroups();
152         verify(mockPolicyController).getPapEngine();
153         verify(mockPAPPolicyEngine).getOnapPDPGroups();
154     }
155
156     @SuppressWarnings("unchecked")
157     @Test
158     public void testRefreshGroups() throws PAPException {
159         PolicyController mockPolicyController = Mockito.mock(PolicyController.class);
160         PAPPolicyEngine mockPAPPolicyEngine = Mockito.mock(PAPPolicyEngine.class);
161         when(mockPolicyController.getPapEngine()).thenReturn(mockPAPPolicyEngine);
162         when(mockPAPPolicyEngine.getOnapPDPGroups()).thenThrow(PAPException.class);
163         apController.setPolicyController(mockPolicyController);
164         apController.refreshGroups();
165         verify(mockPolicyController).getPapEngine();
166         verify(mockPAPPolicyEngine).getOnapPDPGroups();
167     }
168
169     @Test
170     public void testGetPolicyGroupContainerData() throws Exception {
171         Roles superAdmin = new Roles();
172         Roles superEditor = new Roles();
173         Roles superGuest = new Roles();
174         rolesList.add(superAdmin);
175         rolesList.add(superEditor);
176         rolesList.add(superGuest);
177
178         apController.setPolicyController(mockPolicyController);
179         apController.getPolicyGroupContainerData(mockRequest, mockResponse);
180
181         verify(mockRequest, atLeast(1)).getSession(false);
182         verify(mockUser, atLeast(1)).getOrgUserId();
183         verify(mockPolicyController, atLeast(1)).getRoles(any(String.class));
184     }
185
186     @Test
187     public void testGetPolicyGroupContainerDataWithScope() throws Exception {
188         Roles superAdmin = new Roles();
189         superAdmin.setScope("super-admin-scope");
190         Roles superEditor = new Roles();
191         superEditor.setScope("super-editor-scope");
192         Roles superGuest = new Roles();
193         superGuest.setScope("super-guest-scope");
194         rolesList.add(superAdmin);
195         rolesList.add(superEditor);
196         rolesList.add(superGuest);
197
198         apController.setPolicyController(mockPolicyController);
199         apController.getPolicyGroupContainerData(mockRequest, mockResponse);
200
201         verify(mockRequest, atLeast(1)).getSession(false);
202         verify(mockUser, atLeast(1)).getOrgUserId();
203         verify(mockPolicyController, atLeast(1)).getRoles(any(String.class));
204     }
205
206     @Test
207     public void testGetPolicyGroupContainerDataWithRole() throws Exception {
208         Roles superAdmin = new Roles();
209         superAdmin.setRole("super-admin");
210         Roles superEditor = new Roles();
211         superEditor.setRole("super-editor");
212         Roles superGuest = new Roles();
213         superGuest.setRole("super-guest");
214         rolesList.add(superAdmin);
215         rolesList.add(superEditor);
216         rolesList.add(superGuest);
217
218         apController.setPolicyController(mockPolicyController);
219         apController.getPolicyGroupContainerData(mockRequest, mockResponse);
220
221         verify(mockRequest, atLeast(1)).getSession(false);
222         verify(mockUser, atLeast(1)).getOrgUserId();
223         verify(mockPolicyController, atLeast(1)).getRoles(any(String.class));
224     }
225 }