aboutsummaryrefslogtreecommitdiffstats
path: root/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/RestServerTest.java
diff options
context:
space:
mode:
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.java130
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
}
}