2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018-2019 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.Matchers.any;
28 import static org.mockito.Matchers.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.PrepareForTest;
55 import org.powermock.modules.junit4.PowerMockRunner;
57 @RunWith(PowerMockRunner.class)
58 public class DeleteHandlerTest {
61 SessionFactory mockedSessionFactory = Mockito.mock(SessionFactory.class);
62 Session mockedSession = Mockito.mock(Session.class);
63 Transaction mockedTransaction = Mockito.mock(Transaction.class);
64 Mockito.when(mockedSessionFactory.openSession()).thenReturn(mockedSession);
65 Mockito.when(mockedSession.beginTransaction()).thenReturn(mockedTransaction);
66 CommonClassDaoImpl.setSessionfactory(mockedSessionFactory);
67 new DeleteHandler(new CommonClassDaoImpl());
71 public void testGets() {
72 DeleteHandler handler = new DeleteHandler();
73 assertNotNull(handler);
74 assertEquals(handler.preSafetyCheck(null), true);
75 assertNull(handler.getDeletedGroup());
79 public void testGetInstance() {
80 DeleteHandler handler = DeleteHandler.getInstance();
81 assertNotNull(handler);
84 @PrepareForTest({DeleteHandler.class, XACMLPapServlet.class})
86 public void testDeletes() throws Exception {
88 DeleteHandler handler = new DeleteHandler();
89 MockHttpServletRequest request = new MockHttpServletRequest();
90 request.setBodyContent("{\n\"PAPPolicyType\": \"StdPAPPolicy\"\n}\n");
93 PAPPolicyEngine engine = Mockito.mock(StdEngine.class);
94 PowerMockito.mockStatic(XACMLPapServlet.class);
95 when(XACMLPapServlet.getPAPEngine()).thenReturn(engine);
96 when(engine.getGroup(any())).thenReturn(null);
98 // Mock elastic search
99 PolicyElasticSearchController controller = Mockito.mock(PolicyElasticSearchController.class);
100 PowerMockito.whenNew(PolicyElasticSearchController.class).withNoArguments().thenReturn(controller);
102 // Test deletion from PAP
103 MockHttpServletResponse response = new MockHttpServletResponse();
104 handler.doApiDeleteFromPap(request, response);
106 // Test deletion from PDP
107 OnapLoggingContext loggingContext = Mockito.mock(OnapLoggingContext.class);
108 handler.doApiDeleteFromPdp(request, response, loggingContext);
110 // Test delete entity
111 PolicyEntity policyEntity = new PolicyEntity();
112 policyEntity.setPolicyName("testVal");
113 String result = DeleteHandler.deletePolicyEntityData(policyEntity);
114 assertEquals(result, "success");
117 List<?> peResult = Collections.emptyList();
118 assertEquals(DeleteHandler.checkPolicyGroupEntity(peResult), false);
122 public void testDoDeletePap() throws IOException {
123 CommonClassDao dao = Mockito.mock(CommonClassDao.class);
124 DeleteHandler handler = new DeleteHandler(dao);
127 MockHttpServletRequest request = new MockHttpServletRequest();
128 request.setBodyContent(
129 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
130 MockHttpServletResponse response = new MockHttpServletResponse();
131 handler.doApiDeleteFromPap(request, response);
132 assertTrue(response.containsHeader("error"));
135 request.setBodyContent(
136 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Action_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
137 handler.doApiDeleteFromPap(request, response);
138 assertTrue(response.containsHeader("error"));
141 request.setBodyContent(
142 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
143 handler.doApiDeleteFromPap(request, response);
144 assertTrue(response.containsHeader("error"));
147 request.setBodyContent(
148 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Bar_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
149 handler.doApiDeleteFromPap(request, response);
150 assertTrue(response.containsHeader("error"));
153 request.setBodyContent(
154 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
155 handler.doApiDeleteFromPap(request, response);
156 assertTrue(response.containsHeader("error"));
159 request.setBodyContent(
160 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Action_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
161 handler.doApiDeleteFromPap(request, response);
162 assertTrue(response.containsHeader("error"));
165 request.setBodyContent(
166 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
167 handler.doApiDeleteFromPap(request, response);
168 assertTrue(response.containsHeader("error"));
171 List<PolicyVersion> pePVs = new ArrayList<PolicyVersion>();
172 PolicyVersion pv = new PolicyVersion();
174 List<Object> peObjs = new ArrayList<Object>(pePVs);
175 List<PolicyEntity> peEnts = new ArrayList<PolicyEntity>();
176 PolicyEntity peEnt = new PolicyEntity();
178 List<Object> peEntObjs = new ArrayList<Object>(peEnts);
179 Mockito.when(dao.getDataByQuery(eq("Select p from PolicyVersion p where p.policyName=:pname"), any()))
182 dao.getDataByQuery(eq("SELECT p FROM PolicyEntity p WHERE p.policyName=:pName and p.scope=:pScope"), any()))
183 .thenReturn(peEntObjs);
186 request.setBodyContent(
187 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n}\n");
188 handler.doApiDeleteFromPap(request, response);
189 assertTrue(response.containsHeader("error"));
192 request.setBodyContent(
193 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Decision_name.1.xml\", \"deleteCondition\": \"Current Version\"\n, \"deleteCondition\": \"All Versions\"}\n");
194 handler.doApiDeleteFromPap(request, response);
195 assertTrue(response.containsHeader("error"));
198 @Test(expected = NullPointerException.class)
199 public void testDoDeletePdp() throws IOException {
200 CommonClassDao dao = Mockito.mock(CommonClassDao.class);
201 DeleteHandler handler = new DeleteHandler(dao);
202 OnapLoggingContext loggingContext = new OnapLoggingContext();
205 MockHttpServletRequest request = new MockHttpServletRequest();
206 request.setBodyContent(
207 "{\n\"PAPPolicyType\": \"StdPAPPolicy\", \"policyName\": \"foo.Config_name.1.xml\", \"deleteCondition\": \"All Versions\"\n}\n");
208 MockHttpServletResponse response = new MockHttpServletResponse();
210 handler.doApiDeleteFromPdp(request, response, loggingContext);