From 0154925df97446afa15ab60d59c57237dfa7b2e9 Mon Sep 17 00:00:00 2001 From: bobbymander Date: Fri, 15 Nov 2019 13:59:18 -0500 Subject: More JUnit additions for PAP-REST Issue-ID: POLICY-2130 Change-Id: Ia111e5fd6dfba1e03f157ff95f91ef65df293043 Signed-off-by: bobbymander --- .../pap/xacml/rest/service/MetricService.java | 11 +- .../OptimizationDictionaryControllerTest.java | 1 - .../pap/xacml/rest/elk/ElkConnectorImplTest.java | 146 ----------------- .../elk/PolicyElasticSearchControllerTest.java | 55 +++++-- .../rest/elk/client/ElkConnectorImplTest.java | 173 +++++++++++++++++++++ .../pap/xacml/rest/service/MetricServiceTest.java | 21 ++- 6 files changed, 240 insertions(+), 167 deletions(-) delete mode 100644 ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java create mode 100644 ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImplTest.java diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java index 594112636..36dd5fdee 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/MetricService.java @@ -21,13 +21,11 @@ package org.onap.policy.pap.xacml.rest.service; import com.att.research.xacml.api.pap.PDPPolicy; - +import com.google.common.annotations.VisibleForTesting; import java.util.HashSet; import java.util.List; import java.util.Set; - import javax.servlet.http.HttpServletResponse; - import org.json.JSONObject; import org.onap.policy.common.logging.eelf.MessageCodes; import org.onap.policy.common.logging.eelf.PolicyLogger; @@ -51,8 +49,9 @@ public class MetricService { } + @VisibleForTesting @Autowired - private MetricService(CommonClassDao commonClassDao) { + protected MetricService(CommonClassDao commonClassDao) { MetricService.commonClassDao = commonClassDao; } @@ -79,7 +78,7 @@ public class MetricService { json.put("totalCount", totalCount); if (pdpCount > 0 && papCount > 0 && totalCount > 0) { PolicyLogger.info( - "Metrics have been found on the Policy Engine for the number of policies on the PAP and PDP."); + "Metrics have been found on the Policy Engine for the number of policies on the PAP and PDP."); response.setStatus(HttpServletResponse.SC_OK); response.addHeader("successMapKey", "success"); response.addHeader("operation", "getMetrics"); @@ -87,7 +86,7 @@ public class MetricService { return; } else { String message = - "The policy count on the PAP and PDP is 0. Please check the database and file system to correct this error."; + "The policy count on the PAP and PDP is 0. Please check the database and file system to correct this error."; response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.addHeader(errorMsg, message); return; diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java index d990b9002..f109dbdda 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/OptimizationDictionaryControllerTest.java @@ -194,7 +194,6 @@ public class OptimizationDictionaryControllerTest { req.setBodyContent("{\n\"modelType\": \"type.yml\", \"dataOrderInfo\": \"info\", \"userid\": \"id\", " + "\"optimizationModelsDictionaryData\": {\"description\": \"desc\", \"modelName\": \"name\", \"version\": \"1.0\"}, " + "\"classMap\": \"{\\\"dep\\\":\\\"{\\\"dependency\\\":\\\"depval\\\"}\\\"}\" }\n"); - // + "\"classMap\": \"{\\\"dep\\\":\\\"dependency\\\"}\" }\n"); assertThatThrownBy(() -> controller.saveOptimizationModelsDictionary(req, response)) .isInstanceOf(NullPointerException.class); diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java deleted file mode 100644 index 87f56e284..000000000 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/ElkConnectorImplTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP-PAP-REST - * ================================================================================ - * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pap.xacml.rest.elk; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import io.searchbox.client.JestResult; - -import java.io.IOException; -import java.lang.reflect.Method; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onap.policy.pap.xacml.rest.elk.client.ElkConnector.PolicyIndexType; -import org.onap.policy.pap.xacml.rest.elk.client.ElkConnectorImpl; -import org.onap.policy.rest.adapter.PolicyRestAdapter; - -public class ElkConnectorImplTest { - - @Test - public void isAlphaNumericTest() { - try { - Method method = ElkConnectorImpl.class.getDeclaredMethod("isAlphaNumeric", String.class); - method.setAccessible(true); - assertTrue((boolean) method.invoke(new ElkConnectorImpl(), "abc123")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123*")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123{}")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123\n")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123<")); - assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123:")); - } catch (Exception e) { - fail(); - } - } - - @Test - public void searchTest() { - JestResult r1 = null, r2 = null, r3 = null, r4 = null; - - // Should always work if the above test passes and ELK server is up - try { - r1 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123"); - } catch (Exception e) { - // ELK server is down. Don't continue the test - if (e instanceof IllegalStateException) { - return; - } - fail(); - } - - // Should always work - try { - r2 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The_quick_brown_fox_jumps_over_the_lazy_dog"); - } catch (Exception e) { - fail(); - } - - // Should throw exception - try { - r3 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123{}"); - } catch (Exception e) { - if (!(e instanceof IllegalArgumentException)) { - fail(); - } - } - - // Should throw exception - try { - r4 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The quick brown fox jumps over the lazy dog"); - } catch (Exception e) { - if (!(e instanceof IllegalArgumentException)) { - fail(); - } - } - - assertNotNull(r1); - assertNotNull(r2); - assertNull(r3); - assertNull(r4); - } - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void testDelete() { - thrown.expect(NullPointerException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.delete(adapter); - fail("Expected exception to be thrown"); - } - - @Test - public void testPut() throws IOException { - thrown.expect(NullPointerException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.put(adapter); - fail("Expected exception to be thrown"); - } - - @Test - public void testUpdate() { - thrown.expect(IllegalStateException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - PolicyRestAdapter adapter = new PolicyRestAdapter(); - impl.update(adapter); - fail("Expected exception to be thrown"); - } - - @Test - public void testSearchWithFilter() { - thrown.expect(IllegalStateException.class); - - ElkConnectorImpl impl = new ElkConnectorImpl(); - impl.search(PolicyIndexType.config, "search", null); - fail("Expected exception to be thrown"); - } -} diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java index 9456dd4e4..38102afb0 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/PolicyElasticSearchControllerTest.java @@ -20,37 +20,45 @@ package org.onap.policy.pap.xacml.rest.elk; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.when; import java.io.BufferedReader; +import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; - +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; +import org.onap.policy.pap.xacml.rest.elk.client.ElkConnector.PolicyIndexType; import org.onap.policy.pap.xacml.rest.elk.client.PolicyElasticSearchController; +import org.onap.policy.rest.adapter.PolicyRestAdapter; +import org.onap.policy.rest.dao.CommonClassDao; +import org.springframework.mock.web.MockHttpServletResponse; public class PolicyElasticSearchControllerTest { - private PolicyElasticSearchController conroller; + private PolicyElasticSearchController controller; private HttpServletRequest request = null; private HttpServletResponse response = null; @Before public void setup() { - conroller = new PolicyElasticSearchController(); + controller = new PolicyElasticSearchController(); request = Mockito.mock(HttpServletRequest.class); - response = Mockito.mock(HttpServletResponse.class); + response = new MockHttpServletResponse(); } @Test - public void testSearchDictionary() { + public void testSearchDictionary() throws IOException { List jsonString = new ArrayList<>(); jsonString.add("{\"type\":\"attribute\",\"data\":{\"xacmlId\":\"Test\"}}"); jsonString.add("{\"type\":\"onapName\",\"data\":{\"onapName\":\"Test\"}}"); @@ -71,12 +79,35 @@ public class PolicyElasticSearchControllerTest { jsonString.add("{\"type\":\"safeRisk\",\"data\":{\"name\":\"Test\"}}"); jsonString.add("{\"type\":\"safePolicyWarning\",\"data\":{\"name\":\"Test\"}}"); for (int i = 0; i < jsonString.size(); i++) { - try (BufferedReader br = new BufferedReader(new StringReader(jsonString.get(i)))) { - when(request.getReader()).thenReturn(br); - conroller.searchDictionary(request, response); - } catch (Exception e) { - assertEquals(NullPointerException.class, e.getClass()); - } + BufferedReader br = new BufferedReader(new StringReader(jsonString.get(i))); + when(request.getReader()).thenReturn(br); + assertThatCode(() -> controller.searchDictionary(request, response)).doesNotThrowAnyException(); } } + + @Test + public void testController() throws IOException { + CommonClassDao dao = Mockito.mock(CommonClassDao.class); + PolicyElasticSearchController controller = new PolicyElasticSearchController(dao); + assertEquals(PolicyIndexType.all, controller.toPolicyIndexType(null)); + assertEquals(PolicyIndexType.config, controller.toPolicyIndexType("config")); + + Map searchKeys = new HashMap(); + searchKeys.put("key", "value"); + assertThatThrownBy(() -> controller.search(PolicyIndexType.config, "text", searchKeys)) + .isInstanceOf(Exception.class); + + when(request.getParameter("policyName")).thenReturn("policyName"); + when(request.getParameter("action")).thenReturn("search"); + when(request.getReader()) + .thenReturn(new BufferedReader(new StringReader("{\"searchdata\": { \"query\": \"value space\", " + + "\"policyType\": \"all\", " + "\"closedLooppolicyType\": \"type\", " + "\"onapName\": \"pef\", " + + "\"vnfType\": \"vnf\", " + "\"policyStatus\": \"active\", " + "\"vproAction\": \"reboot\", " + + "\"serviceType\": \"type\", " + "\"bindTextSearch\": \"pef\", " + "\"d2Service\": \"vDNS\"} }"))); + controller.searchPolicy(request, response); + assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + + PolicyRestAdapter policyData = new PolicyRestAdapter(); + assertFalse(controller.deleteElk(policyData)); + } } diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImplTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImplTest.java new file mode 100644 index 000000000..8eb003ca8 --- /dev/null +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/elk/client/ElkConnectorImplTest.java @@ -0,0 +1,173 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP-PAP-REST + * ================================================================================ + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pap.xacml.rest.elk.client; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import io.searchbox.client.JestResult; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.onap.policy.pap.xacml.rest.elk.client.ElkConnector.PolicyIndexType; +import org.onap.policy.rest.adapter.PolicyRestAdapter; + +public class ElkConnectorImplTest { + + @Test + public void isAlphaNumericTest() { + try { + Method method = ElkConnectorImpl.class.getDeclaredMethod("isAlphaNumeric", String.class); + method.setAccessible(true); + assertTrue((boolean) method.invoke(new ElkConnectorImpl(), "abc123")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123*")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123{}")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123\n")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123<")); + assertFalse((boolean) method.invoke(new ElkConnectorImpl(), "abc123:")); + } catch (Exception e) { + fail(); + } + } + + @Test + public void searchTest() { + JestResult r1 = null, r2 = null, r3 = null, r4 = null; + + // Should always work if the above test passes and ELK server is up + try { + r1 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123"); + } catch (Exception e) { + // ELK server is down. Don't continue the test + if (e instanceof IllegalStateException) { + return; + } + fail(); + } + + // Should always work + try { + r2 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The_quick_brown_fox_jumps_over_the_lazy_dog"); + } catch (Exception e) { + fail(); + } + + // Should throw exception + try { + r3 = new ElkConnectorImpl().search(PolicyIndexType.decision, "abc123{}"); + } catch (Exception e) { + if (!(e instanceof IllegalArgumentException)) { + fail(); + } + } + + // Should throw exception + try { + r4 = new ElkConnectorImpl().search(PolicyIndexType.decision, "The quick brown fox jumps over the lazy dog"); + } catch (Exception e) { + if (!(e instanceof IllegalArgumentException)) { + fail(); + } + } + + assertNotNull(r1); + assertNotNull(r2); + assertNull(r3); + assertNull(r4); + } + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void testDelete() { + thrown.expect(NullPointerException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.delete(adapter); + fail("Expected exception to be thrown"); + } + + @Test + public void testPut() throws IOException { + thrown.expect(NullPointerException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.put(adapter); + fail("Expected exception to be thrown"); + } + + @Test + public void testUpdate() { + thrown.expect(IllegalStateException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + PolicyRestAdapter adapter = new PolicyRestAdapter(); + impl.update(adapter); + fail("Expected exception to be thrown"); + } + + @Test + public void testSearchWithFilter() { + thrown.expect(IllegalStateException.class); + + ElkConnectorImpl impl = new ElkConnectorImpl(); + impl.search(PolicyIndexType.config, "search", null); + fail("Expected exception to be thrown"); + } + + @Test + public void testImplNegCases() throws IOException { + ElkConnectorImpl impl = new ElkConnectorImpl(); + Map filter = new HashMap(); + assertThatThrownBy(() -> impl.isType(PolicyIndexType.config)).isInstanceOf(IOException.class); + assertThatThrownBy(() -> impl.isIndex()).isInstanceOf(IOException.class); + assertThatThrownBy(() -> impl.search(null, null)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> impl.search(null, "")).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> impl.search(null, ";;;")).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> impl.search(null, "foo")).isInstanceOf(IllegalStateException.class); + assertThatThrownBy(() -> impl.search(PolicyIndexType.all, "foo")).isInstanceOf(IllegalStateException.class); + + assertThatThrownBy(() -> impl.search(null, null, null)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> impl.search(null, null, filter)).isInstanceOf(IllegalArgumentException.class); + filter.put("key", "value"); + assertThatThrownBy(() -> impl.search(null, ";;;", filter)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> impl.search(null, "foo", filter)).isInstanceOf(IllegalStateException.class); + assertThatThrownBy(() -> impl.search(PolicyIndexType.config, "foo", filter)) + .isInstanceOf(IllegalStateException.class); + + PolicyRestAdapter adapter = new PolicyRestAdapter(); + adapter.setNewFileName("scope.Decision_newFile"); + adapter.setConfigPolicyType("Config"); + assertThatThrownBy(() -> impl.put(adapter)).isInstanceOf(IOException.class); + assertThatThrownBy(() -> impl.delete(adapter)).isInstanceOf(IllegalStateException.class); + } +} diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java index a4ee0ca77..ebd3292aa 100644 --- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java +++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/service/MetricServiceTest.java @@ -21,15 +21,19 @@ package org.onap.policy.pap.xacml.rest.service; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.when; import com.mockrunner.mock.web.MockHttpServletResponse; - +import java.util.ArrayList; +import java.util.List; import javax.servlet.http.HttpServletResponse; - import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mockito; import org.onap.policy.pap.xacml.rest.XACMLPapServlet; +import org.onap.policy.rest.dao.CommonClassDao; +import org.onap.policy.rest.jpa.PolicyVersion; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @@ -47,4 +51,17 @@ public class MetricServiceTest { MetricService.doGetPolicyMetrics(response); assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatusCode()); } + + @Test + public void testService() { + CommonClassDao dao = Mockito.mock(CommonClassDao.class); + List value = new ArrayList(); + when(dao.getData(PolicyVersion.class)).thenReturn(value); + MetricService service = new MetricService(dao); + assertNotNull(service); + + MockHttpServletResponse response = new MockHttpServletResponse(); + MetricService.doGetPolicyMetrics(response); + assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatusCode()); + } } -- cgit 1.2.3-korg