2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.policy.pap.xacml.rest.handler;
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;
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;
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 {
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());
74 public void testGets() {
75 DeleteHandler handler = new DeleteHandler();
76 assertNotNull(handler);
77 assertEquals(handler.preSafetyCheck(null), true);
78 assertNull(handler.getDeletedGroup());
82 public void testGetInstance() {
83 DeleteHandler handler = DeleteHandler.getInstance();
84 assertNotNull(handler);
87 @PrepareForTest({DeleteHandler.class, XACMLPapServlet.class})
89 public void testDeletes() throws Exception {
91 DeleteHandler handler = new DeleteHandler();
92 MockHttpServletRequest request = new MockHttpServletRequest();
93 request.setBodyContent("{\n\"PAPPolicyType\": \"StdPAPPolicy\"\n}\n");
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);
101 // Mock elastic search
102 PolicyElasticSearchController controller = Mockito.mock(PolicyElasticSearchController.class);
103 PowerMockito.whenNew(PolicyElasticSearchController.class).withNoArguments().thenReturn(controller);
105 // Test deletion from PAP
106 MockHttpServletResponse response = new MockHttpServletResponse();
107 handler.doApiDeleteFromPap(request, response);
109 // Test deletion from PDP
110 OnapLoggingContext loggingContext = Mockito.mock(OnapLoggingContext.class);
111 handler.doApiDeleteFromPdp(request, response, loggingContext);
113 // Test delete entity
114 PolicyEntity policyEntity = new PolicyEntity();
115 policyEntity.setPolicyName("testVal");
116 String result = DeleteHandler.deletePolicyEntityData(policyEntity);
117 assertEquals(result, "success");
120 List<?> peResult = Collections.emptyList();
121 assertEquals(DeleteHandler.checkPolicyGroupEntity(peResult), false);
125 public void testDoDeletePap() throws IOException {
126 CommonClassDao dao = Mockito.mock(CommonClassDao.class);
127 DeleteHandler handler = new DeleteHandler(dao);
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"));
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"));
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"));
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"));
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"));
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"));
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"));
174 List<PolicyVersion> pePVs = new ArrayList<PolicyVersion>();
175 PolicyVersion pv = new PolicyVersion();
177 List<Object> peObjs = new ArrayList<Object>(pePVs);
178 List<PolicyEntity> peEnts = new ArrayList<PolicyEntity>();
179 PolicyEntity peEnt = new PolicyEntity();
181 List<Object> peEntObjs = new ArrayList<Object>(peEnts);
182 Mockito.when(dao.getDataByQuery(eq("Select p from PolicyVersion p where p.policyName=:pname"), any()))
185 dao.getDataByQuery(eq("SELECT p FROM PolicyEntity p WHERE p.policyName=:pName and p.scope=:pScope"), any()))
186 .thenReturn(peEntObjs);
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"));
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"));
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();
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();
213 handler.doApiDeleteFromPdp(request, response, loggingContext);