policy/engine jdk11 upgrades
[policy/engine.git] / ONAP-PAP-REST / src / test / java / org / onap / policy / pap / xacml / rest / handler / DeleteHandlerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
4  * ================================================================================
5  * Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pap.xacml.rest.handler;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.Mockito.when;
30
31 import com.mockrunner.mock.web.MockHttpServletRequest;
32 import com.mockrunner.mock.web.MockHttpServletResponse;
33 import java.io.IOException;
34 import java.util.ArrayList;
35 import java.util.Collections;
36 import java.util.List;
37 import org.hibernate.Session;
38 import org.hibernate.SessionFactory;
39 import org.hibernate.Transaction;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.junit.runner.RunWith;
43 import org.mockito.Mockito;
44 import org.onap.policy.common.logging.OnapLoggingContext;
45 import org.onap.policy.pap.xacml.rest.XACMLPapServlet;
46 import org.onap.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
47 import org.onap.policy.pap.xacml.rest.elk.client.PolicyElasticSearchController;
48 import org.onap.policy.rest.dao.CommonClassDao;
49 import org.onap.policy.rest.jpa.PolicyEntity;
50 import org.onap.policy.rest.jpa.PolicyVersion;
51 import org.onap.policy.xacml.api.pap.PAPPolicyEngine;
52 import org.onap.policy.xacml.std.pap.StdEngine;
53 import org.powermock.api.mockito.PowerMockito;
54 import org.powermock.core.classloader.annotations.PowerMockIgnore;
55 import org.powermock.core.classloader.annotations.PrepareForTest;
56 import org.powermock.modules.junit4.PowerMockRunner;
57
58 @RunWith(PowerMockRunner.class)
59 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "jdk.internal.reflect.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})
60 @PrepareForTest(DeleteHandler.class)
61 public class DeleteHandlerTest {
62     @Before
63     public void setUp() {
64         SessionFactory mockedSessionFactory = Mockito.mock(SessionFactory.class);
65         Session mockedSession = Mockito.mock(Session.class);
66         Transaction mockedTransaction = Mockito.mock(Transaction.class);
67         Mockito.when(mockedSessionFactory.openSession()).thenReturn(mockedSession);
68         Mockito.when(mockedSession.beginTransaction()).thenReturn(mockedTransaction);
69         CommonClassDaoImpl.setSessionfactory(mockedSessionFactory);
70         new DeleteHandler(new CommonClassDaoImpl());
71     }
72
73     @Test
74     public void testGets() {
75         DeleteHandler handler = new DeleteHandler();
76         assertNotNull(handler);
77         assertEquals(handler.preSafetyCheck(null), true);
78         assertNull(handler.getDeletedGroup());
79     }
80
81     @Test
82     public void testGetInstance() {
83         DeleteHandler handler = DeleteHandler.getInstance();
84         assertNotNull(handler);
85     }
86
87     @PrepareForTest({DeleteHandler.class, XACMLPapServlet.class})
88     @Test
89     public void testDeletes() throws Exception {
90         // Mock request
91         DeleteHandler handler = new DeleteHandler();
92         MockHttpServletRequest request = new MockHttpServletRequest();
93         request.setBodyContent("{\n\"PAPPolicyType\": \"StdPAPPolicy\"\n}\n");
94
95         // Mock servlet
96         PAPPolicyEngine engine = Mockito.mock(StdEngine.class);
97         PowerMockito.mockStatic(XACMLPapServlet.class);
98         when(XACMLPapServlet.getPAPEngine()).thenReturn(engine);
99         when(engine.getGroup(any())).thenReturn(null);
100
101         // Mock elastic search
102         PolicyElasticSearchController controller = Mockito.mock(PolicyElasticSearchController.class);
103         PowerMockito.whenNew(PolicyElasticSearchController.class).withNoArguments().thenReturn(controller);
104
105         // Test deletion from PAP
106         MockHttpServletResponse response = new MockHttpServletResponse();
107         handler.doApiDeleteFromPap(request, response);
108
109         // Test deletion from PDP
110         OnapLoggingContext loggingContext = Mockito.mock(OnapLoggingContext.class);
111         handler.doApiDeleteFromPdp(request, response, loggingContext);
112
113         // Test delete entity
114         PolicyEntity policyEntity = new PolicyEntity();
115         policyEntity.setPolicyName("testVal");
116         String result = DeleteHandler.deletePolicyEntityData(policyEntity);
117         assertEquals(result, "success");
118
119         // Test check entity
120         List<?> peResult = Collections.emptyList();
121         assertEquals(DeleteHandler.checkPolicyGroupEntity(peResult), false);
122     }
123
124     @Test
125     public void testDoDeletePap() throws IOException {
126         CommonClassDao dao = Mockito.mock(CommonClassDao.class);
127         DeleteHandler handler = new DeleteHandler(dao);
128
129         // Request #1
130         MockHttpServletRequest request = new MockHttpServletRequest();
131         request.setBodyContent(
132             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
133         MockHttpServletResponse response = new MockHttpServletResponse();
134         handler.doApiDeleteFromPap(request, response);
135         assertTrue(response.containsHeader("error"));
136
137         // Request #2
138         request.setBodyContent(
139             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Action_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
140         handler.doApiDeleteFromPap(request, response);
141         assertTrue(response.containsHeader("error"));
142
143         // Request #3
144         request.setBodyContent(
145             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
146         handler.doApiDeleteFromPap(request, response);
147         assertTrue(response.containsHeader("error"));
148
149         // Request #4
150         request.setBodyContent(
151             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Bar_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
152         handler.doApiDeleteFromPap(request, response);
153         assertTrue(response.containsHeader("error"));
154
155         // Request #5
156         request.setBodyContent(
157             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
158         handler.doApiDeleteFromPap(request, response);
159         assertTrue(response.containsHeader("error"));
160
161         // Request #6
162         request.setBodyContent(
163             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Action_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
164         handler.doApiDeleteFromPap(request, response);
165         assertTrue(response.containsHeader("error"));
166
167         // Request #7
168         request.setBodyContent(
169             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
170         handler.doApiDeleteFromPap(request, response);
171         assertTrue(response.containsHeader("error"));
172
173         // Mock dao
174         List<PolicyVersion> pePVs = new ArrayList<PolicyVersion>();
175         PolicyVersion pv = new PolicyVersion();
176         pePVs.add(pv);
177         List<Object> peObjs = new ArrayList<Object>(pePVs);
178         List<PolicyEntity> peEnts = new ArrayList<PolicyEntity>();
179         PolicyEntity peEnt = new PolicyEntity();
180         peEnts.add(peEnt);
181         List<Object> peEntObjs = new ArrayList<Object>(peEnts);
182         Mockito.when(dao.getDataByQuery(eq("Select p from PolicyVersion p where p.policyName=:pname"), any()))
183             .thenReturn(peObjs);
184         Mockito.when(
185             dao.getDataByQuery(eq("SELECT p FROM PolicyEntity p WHERE p.policyName=:pName and p.scope=:pScope"), any()))
186             .thenReturn(peEntObjs);
187
188         // Request #8
189         request.setBodyContent(
190             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
191         handler.doApiDeleteFromPap(request, response);
192         assertTrue(response.containsHeader("error"));
193
194         // Request #9
195         request.setBodyContent(
196             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n, \"deleteCondition\": \"All Versions\"}\n");
197         handler.doApiDeleteFromPap(request, response);
198         assertTrue(response.containsHeader("error"));
199     }
200
201     @Test(expected = NullPointerException.class)
202     public void testDoDeletePdp() throws IOException {
203         CommonClassDao dao = Mockito.mock(CommonClassDao.class);
204         DeleteHandler handler = new DeleteHandler(dao);
205         OnapLoggingContext loggingContext = new OnapLoggingContext();
206
207         // Mock request
208         MockHttpServletRequest request = new MockHttpServletRequest();
209         request.setBodyContent(
210             "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
211         MockHttpServletResponse response = new MockHttpServletResponse();
212
213         handler.doApiDeleteFromPdp(request, response, loggingContext);
214     }
215 }