diff options
Diffstat (limited to 'policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java')
-rw-r--r-- | policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java | 130 |
1 files changed, 69 insertions, 61 deletions
diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java index 16f17652..a789a66f 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java @@ -2,7 +2,9 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2021 Bell Canada. All rights reserved. + * Modifications Copyright (C) 2023-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +33,16 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import io.prometheus.client.servlet.jakarta.exporter.MetricsServlet; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.io.IOException; import java.io.PrintWriter; import java.net.HttpURLConnection; @@ -38,14 +50,8 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Base64; +import java.util.List; import java.util.Properties; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import lombok.Getter; import org.apache.commons.io.IOUtils; import org.junit.AfterClass; @@ -60,15 +66,15 @@ import org.onap.policy.common.endpoints.http.server.RestServer; import org.onap.policy.common.endpoints.http.server.RestServer.Factory; import org.onap.policy.common.endpoints.http.server.YamlExceptionMapper; import org.onap.policy.common.endpoints.http.server.YamlMessageBodyHandler; -import org.onap.policy.common.endpoints.http.server.aaf.AafAuthFilter; import org.onap.policy.common.endpoints.parameters.RestServerParameters; import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; import org.onap.policy.common.gson.GsonMessageBodyHandler; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.network.NetworkUtil; -import org.powermock.reflect.Whitebox; +import org.springframework.test.util.ReflectionTestUtils; public class RestServerTest { + private static final String METRICS_URI = "/metrics"; private static final String SERVER1 = "my-server-A"; private static final String SERVER2 = "my-server-B"; private static final String FACTORY_FIELD = "factory"; @@ -96,13 +102,13 @@ public class RestServerTest { */ @BeforeClass public static void setUpBeforeClass() throws Exception { - saveFactory = Whitebox.getInternalState(RestServer.class, FACTORY_FIELD); + saveFactory = (Factory) ReflectionTestUtils.getField(RestServer.class, FACTORY_FIELD); realPort = NetworkUtil.allocPort(); initRealParams(); - realRest = new RestServer(params, null, RealProvider.class) { + realRest = new RestServer(params, RealProvider.class) { @Override protected Properties getServerProperties(RestServerParameters restServerParameters, String names) { Properties props = super.getServerProperties(restServerParameters, names); @@ -124,7 +130,7 @@ public class RestServerTest { */ @AfterClass public static void tearDownAfterClass() { - Whitebox.setInternalState(RestServer.class, FACTORY_FIELD, saveFactory); + ReflectionTestUtils.setField(RestServer.class, FACTORY_FIELD, saveFactory); realRest.stop(); } @@ -147,12 +153,12 @@ public class RestServerTest { when(server1.getName()).thenReturn(SERVER1); when(server2.getName()).thenReturn(SERVER2); - Whitebox.setInternalState(RestServer.class, FACTORY_FIELD, factory); + ReflectionTestUtils.setField(RestServer.class, FACTORY_FIELD, factory); } @Test public void testRestServer() { - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); + rest = new RestServer(params, Filter2.class, Provider1.class, Provider2.class); rest.start(); verify(server1).start(); @@ -164,52 +170,26 @@ public class RestServerTest { } @Test - public void testRestServer_NoAaf() { - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); - verify(server1, never()).addFilterClass(any(), any()); - verify(server2, never()).addFilterClass(any(), any()); - } - - @Test - public void testRestServer_OnlyOneAaf() { - when(server2.isAaf()).thenReturn(true); - - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); - - verify(server1, never()).addFilterClass(any(), any()); - verify(server2).addFilterClass(null, Filter.class.getName()); - } - - @Test - public void testRestServer_BothAaf() { - when(server1.isAaf()).thenReturn(true); - when(server2.isAaf()).thenReturn(true); - - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); - - verify(server1).addFilterClass(null, Filter.class.getName()); - verify(server2).addFilterClass(null, Filter.class.getName()); - } + public void testRestServerListList() { + rest = new RestServer(params, List.of(Filter2.class), List.of(Provider1.class, Provider2.class)); - @Test - public void testRestServer_BothAaf_NoFilter() { - when(server1.isAaf()).thenReturn(true); - when(server2.isAaf()).thenReturn(true); - - rest = new RestServer(params, null, Provider1.class, Provider2.class); + rest.start(); + verify(server1).start(); + verify(server2).start(); - verify(server1, never()).addFilterClass(any(), any()); - verify(server2, never()).addFilterClass(any(), any()); + rest.stop(); + verify(server1).stop(); + verify(server2).stop(); } @Test public void testRestServer_MissingProviders() { - assertThatIllegalArgumentException().isThrownBy(() -> new RestServer(params, Filter.class)); + assertThatIllegalArgumentException().isThrownBy(() -> new RestServer(params, List.of(Filter2.class), null)); } @Test public void testGetServerProperties_testGetProviderNames() { - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); + rest = new RestServer(params, Provider1.class, Provider2.class); ArgumentCaptor<Properties> cap = ArgumentCaptor.forClass(Properties.class); verify(serverFactory).build(cap.capture()); @@ -227,10 +207,43 @@ public class RestServerTest { assertEquals(USER, props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX)); assertEquals(PASS, props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX)); assertEquals("true", props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX)); - assertEquals("true", props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_AAF_SUFFIX)); assertEquals(String.join(",", GsonMessageBodyHandler.class.getName(), YamlMessageBodyHandler.class.getName(), JsonExceptionMapper.class.getName(), YamlExceptionMapper.class.getName()), props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER)); + assertEquals("false", props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_PROMETHEUS_SUFFIX)); + } + + @Test + public void testExplicitPrometheusAddedToProperty() { + when(params.isPrometheus()).thenReturn(true); + rest = new RestServer(params, Filter2.class, Provider1.class, Provider2.class); + ArgumentCaptor<Properties> cap = ArgumentCaptor.forClass(Properties.class); + verify(serverFactory).build(cap.capture()); + + Properties props = cap.getValue(); + String svcpfx = PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + PARAM_NAME; + + assertEquals("true", props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_PROMETHEUS_SUFFIX)); + assertThat(props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERVLET_URIPATH_SUFFIX)).isBlank(); + assertThat(props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERVLET_CLASS_SUFFIX)).isBlank(); + } + + @Test + public void testStandardServletAddedToProperty() { + when(params.getServletUriPath()).thenReturn("/metrics"); + when(params.getServletClass()).thenReturn(MetricsServlet.class.getName()); + rest = new RestServer(params, Filter2.class, Provider1.class, Provider2.class); + ArgumentCaptor<Properties> cap = ArgumentCaptor.forClass(Properties.class); + verify(serverFactory).build(cap.capture()); + + Properties props = cap.getValue(); + String svcpfx = PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + PARAM_NAME; + + assertEquals("false", props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_PROMETHEUS_SUFFIX)); + assertEquals(METRICS_URI, + props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERVLET_URIPATH_SUFFIX)); + assertEquals(MetricsServlet.class.getName(), + props.getProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERVLET_CLASS_SUFFIX)); } @Test @@ -285,7 +298,7 @@ public class RestServerTest { @Test public void testToString() { - rest = new RestServer(params, Filter.class, Provider1.class, Provider2.class); + rest = new RestServer(params, Filter2.class, Provider1.class, Provider2.class); assertNotNull(rest.toString()); } @@ -316,15 +329,10 @@ public class RestServerTest { when(params.isHttps()).thenReturn(true); } - private static class Filter extends AafAuthFilter { + private static class Filter2 implements jakarta.servlet.Filter { @Override - protected String getPermissionType(HttpServletRequest request) { - return ""; - } - - @Override - protected String getPermissionInstance(HttpServletRequest request) { - return ""; + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { + // do nothing } } |