aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/test')
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpClientExceptionTest.java35
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpClientTest.java141
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java74
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterGroup.java36
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java9
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java115
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/PapRestControllerV1Test.java63
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java3
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteControllerV1.java79
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployControllerV1.java78
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestStatisticsRestControllerV1.java3
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/startstop/TestMain.java3
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java16
-rw-r--r--main/src/test/resources/parameters/topic.properties22
14 files changed, 408 insertions, 269 deletions
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientExceptionTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientExceptionTest.java
deleted file mode 100644
index aa927665..00000000
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientExceptionTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP PAP
- * ================================================================================
- * Copyright (C) 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.main.comm;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.onap.policy.common.utils.test.ExceptionsTester;
-import org.onap.policy.pap.main.comm.PdpClientException;
-
-public class PdpClientExceptionTest {
-
- @Test
- public void test() {
- assertEquals(5, new ExceptionsTester().test(PdpClientException.class));
- }
-}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientTest.java
deleted file mode 100644
index 22823bfb..00000000
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpClientTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP PAP
- * ================================================================================
- * Copyright (C) 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.main.comm;
-
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.atomic.AtomicReference;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.internal.util.reflection.Whitebox;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpoint;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-
-public class PdpClientTest {
- private static final String SINK_FIELD_NAME = "sink";
- private static final String TOPIC = "my-topic";
-
- private PdpClient client;
- private TopicSink sink;
- private List<TopicSink> sinks;
-
- /**
- * Creates mocks and an initial client object.
- *
- * @throws Exception if an error occurs
- */
- @Before
- public void setUp() throws Exception {
- sink = mock(TopicSink.class);
- when(sink.send(anyString())).thenReturn(true);
-
- sinks = Arrays.asList(sink, null);
-
- client = new PdpClient2(TOPIC);
- }
-
- /**
- * Uses a real NO-OP topic sink.
- */
- @Test
- public void testGetTopicSinks() throws Exception {
- // clear all topics and then configure one topic
- TopicEndpoint.manager.shutdown();
-
- Properties props = new Properties();
- props.setProperty("noop.sink.topics", TOPIC);
- TopicEndpoint.manager.addTopicSinks(props);
-
- sink = TopicEndpoint.manager.getNoopTopicSink(TOPIC);
- assertNotNull(sink);
-
- AtomicReference<String> evref = new AtomicReference<>(null);
-
- sink.register(new TopicListener() {
- @Override
- public void onTopicEvent(CommInfrastructure infra, String topic, String event) {
- evref.set(event);
- }
- });
-
- sink.start();
-
- client = new PdpClient(TOPIC);
- client.send(100);
-
- assertEquals("100", evref.get());
- }
-
- @Test
- public void testPdpClient_testGetTopic() {
- assertEquals(TOPIC, client.getTopic());
- assertSame(sink, Whitebox.getInternalState(client, SINK_FIELD_NAME));
-
- // unknown topic -> should throw exception
- sinks = new LinkedList<>();
- assertThatThrownBy(() -> new PdpClient2(TOPIC)).isInstanceOf(PdpClientException.class)
- .hasMessage("no sinks for topic: my-topic");
- }
-
- @Test
- public void testSend() throws Exception {
- client.send(Arrays.asList("abc", "def"));
- verify(sink).send("['abc','def']".replace('\'', '"'));
-
- // sink send fails
- when(sink.send(anyString())).thenReturn(false);
- assertFalse(client.send("ghi"));
-
- // sink send throws an exception
- RuntimeException ex = new RuntimeException("expected exception");
- when(sink.send(anyString())).thenThrow(ex);
- assertFalse(client.send("jkl"));
- }
-
- /**
- * PdpClient with some overrides.
- */
- private class PdpClient2 extends PdpClient {
-
- public PdpClient2(String topic) throws PdpClientException {
- super(topic);
- }
-
- @Override
- protected List<TopicSink> getTopicSinks(String topic) {
- return sinks;
- }
- }
-}
diff --git a/main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java b/main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java
index 27d8ac2a..8054194b 100644
--- a/main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java
+++ b/main/src/test/java/org/onap/policy/pap/main/parameters/CommonTestData.java
@@ -21,6 +21,13 @@
package org.onap.policy.pap.main.parameters;
+import java.util.Map;
+import java.util.TreeMap;
+import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.common.utils.coder.Coder;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
/**
* Class to hold/create all parameters for test cases.
*
@@ -36,21 +43,70 @@ public class CommonTestData {
private static final boolean REST_SERVER_AAF = false;
public static final String PAP_GROUP_NAME = "PapGroup";
+ private static final Coder coder = new StandardCoder();
+
+ /**
+ * Converts the contents of a map to a parameter class.
+ *
+ * @param source property map
+ * @param clazz class of object to be created from the map
+ * @return a new object represented by the map
+ */
+ public <T extends ParameterGroup> T toObject(Map<String, Object> source, Class<T> clazz) {
+ try {
+ return coder.decode(coder.encode(source), clazz);
+
+ } catch (CoderException e) {
+ throw new RuntimeException("cannot create " + clazz.getName() + " from map", e);
+ }
+ }
+
/**
- * Returns an instance of RestServerParameters for test cases.
+ * Returns a property map for a PapParameterGroup map for test cases.
+ * @param name name of the parameters
+ *
+ * @return a property map suitable for constructing an object
+ */
+ public Map<String, Object> getPapParameterGroupMap(String name) {
+ Map<String,Object> map = new TreeMap<>();
+
+ map.put("name", name);
+ map.put("restServerParameters", getRestServerParametersMap(false));
+ map.put("pdpGroupDeploymentParameters", getPdpGroupDeploymentParametersMap());
+
+ return map;
+ }
+
+ /**
+ * Returns a property map for a RestServerParameters map for test cases.
*
* @param isEmpty boolean value to represent that object created should be empty or not
- * @return the restServerParameters object
+ * @return a property map suitable for constructing an object
*/
- public RestServerParameters getRestServerParameters(final boolean isEmpty) {
- final RestServerParameters restServerParameters;
+ public Map<String,Object> getRestServerParametersMap(final boolean isEmpty) {
+ Map<String,Object> map = new TreeMap<>();
+ map.put("https", REST_SERVER_HTTPS);
+ map.put("aaf", REST_SERVER_AAF);
+
if (!isEmpty) {
- restServerParameters = new RestServerParameters(REST_SERVER_HOST, REST_SERVER_PORT, REST_SERVER_USER,
- REST_SERVER_PASSWORD, REST_SERVER_HTTPS, REST_SERVER_AAF);
- } else {
- restServerParameters = new RestServerParameters(null, 0, null, null, REST_SERVER_HTTPS, REST_SERVER_AAF);
+ map.put("host", REST_SERVER_HOST);
+ map.put("port", REST_SERVER_PORT);
+ map.put("userName", REST_SERVER_USER);
+ map.put("password", REST_SERVER_PASSWORD);
}
- return restServerParameters;
+
+ return map;
}
+ /**
+ * Returns a property map for a PdpGroupDeploymentParameters map for test cases.
+ *
+ * @return a property map suitable for constructing an object
+ */
+ public Map<String,Object> getPdpGroupDeploymentParametersMap() {
+ Map<String,Object> map = new TreeMap<>();
+ map.put("waitResponseMs", "1");
+
+ return map;
+ }
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterGroup.java b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterGroup.java
index 4759f646..2450a750 100644
--- a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterGroup.java
+++ b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterGroup.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.util.Map;
import org.junit.Test;
import org.onap.policy.common.parameters.GroupValidationResult;
@@ -37,10 +38,16 @@ public class TestPapParameterGroup {
CommonTestData commonTestData = new CommonTestData();
@Test
+ public void testPapParameterGroup_Named() {
+ final PapParameterGroup papParameters = new PapParameterGroup("my-name");
+ assertEquals("my-name", papParameters.getName());
+ }
+
+ @Test
public void testPapParameterGroup() {
- final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
- final PapParameterGroup papParameters =
- new PapParameterGroup(CommonTestData.PAP_GROUP_NAME, restServerParameters);
+ final PapParameterGroup papParameters = commonTestData.toObject(
+ commonTestData.getPapParameterGroupMap(CommonTestData.PAP_GROUP_NAME), PapParameterGroup.class);
+ final RestServerParameters restServerParameters = papParameters.getRestServerParameters();
final GroupValidationResult validationResult = papParameters.validate();
assertTrue(validationResult.isValid());
assertEquals(CommonTestData.PAP_GROUP_NAME, papParameters.getName());
@@ -54,19 +61,18 @@ public class TestPapParameterGroup {
@Test
public void testPapParameterGroup_NullName() {
- final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
- final PapParameterGroup papParameters = new PapParameterGroup(null, restServerParameters);
+ final PapParameterGroup papParameters = commonTestData.toObject(
+ commonTestData.getPapParameterGroupMap(null), PapParameterGroup.class);
final GroupValidationResult validationResult = papParameters.validate();
assertFalse(validationResult.isValid());
assertEquals(null, papParameters.getName());
- assertTrue(validationResult.getResult().contains(
- "field \"name\" type \"java.lang.String\" value \"null\" INVALID, " + "must be a non-blank string"));
+ assertTrue(validationResult.getResult().contains("is null"));
}
@Test
public void testPapParameterGroup_EmptyName() {
- final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
- final PapParameterGroup papParameters = new PapParameterGroup("", restServerParameters);
+ final PapParameterGroup papParameters = commonTestData.toObject(
+ commonTestData.getPapParameterGroupMap(""), PapParameterGroup.class);
final GroupValidationResult validationResult = papParameters.validate();
assertFalse(validationResult.isValid());
assertEquals("", papParameters.getName());
@@ -76,9 +82,8 @@ public class TestPapParameterGroup {
@Test
public void testPapParameterGroup_SetName() {
- final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
- final PapParameterGroup papParameters =
- new PapParameterGroup(CommonTestData.PAP_GROUP_NAME, restServerParameters);
+ final PapParameterGroup papParameters = commonTestData.toObject(
+ commonTestData.getPapParameterGroupMap(CommonTestData.PAP_GROUP_NAME), PapParameterGroup.class);
papParameters.setName("PapNewGroup");
final GroupValidationResult validationResult = papParameters.validate();
assertTrue(validationResult.isValid());
@@ -87,10 +92,11 @@ public class TestPapParameterGroup {
@Test
public void testApiParameterGroup_EmptyRestServerParameters() {
- final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(true);
+ Map<String, Object> map = commonTestData.getPapParameterGroupMap(CommonTestData.PAP_GROUP_NAME);
+ map.put("restServerParameters", commonTestData.getRestServerParametersMap(true));
- final PapParameterGroup papParameters =
- new PapParameterGroup(CommonTestData.PAP_GROUP_NAME, restServerParameters);
+ final PapParameterGroup papParameters = commonTestData.toObject(
+ map, PapParameterGroup.class);
final GroupValidationResult validationResult = papParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
diff --git a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
index b0f9521d..363a130a 100644
--- a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
+++ b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
@@ -21,6 +21,7 @@
package org.onap.policy.pap.main.parameters;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -93,13 +94,7 @@ public class TestPapParameterHandler {
final PapCommandLineArguments noArguments = new PapCommandLineArguments();
noArguments.parse(noArgumentString);
- try {
- new PapParameterHandler().getParameters(noArguments);
- fail("test should throw an exception here");
- } catch (final Exception e) {
- assertTrue(e.getMessage().contains(
- "field \"name\" type \"java.lang.String\" value \"null\" INVALID, must be a non-blank string"));
- }
+ assertThatThrownBy(() -> new PapParameterHandler().getParameters(noArguments)).hasMessageContaining("is null");
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java b/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
index 8f522740..25ab1c37 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
@@ -21,25 +21,22 @@
package org.onap.policy.pap.main.rest;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import java.util.function.Function;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
import org.junit.After;
import org.junit.AfterClass;
@@ -88,7 +85,7 @@ public class CommonPapRestServer {
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
- allocPort();
+ port = NetworkUtil.allocPort();
httpsPrefix = "https://localhost:" + port + "/";
@@ -140,41 +137,32 @@ public class CommonPapRestServer {
* @throws Exception if an error occurs
*/
protected void testSwagger(final String endpoint) throws Exception {
- final Invocation.Builder invocationBuilder = sendFqeRequest(httpsPrefix + "swagger.yaml");
+ final Invocation.Builder invocationBuilder = sendFqeRequest(httpsPrefix + "swagger.yaml", true);
final String resp = invocationBuilder.get(String.class);
assertTrue(resp.contains(ENDPOINT_PREFIX + endpoint + ":"));
}
/**
- * Allocates a port for the server.
- *
- * @throws IOException if an error occurs
- */
- private static void allocPort() throws IOException {
- ServerSocket socket = new ServerSocket();
- socket.bind(new InetSocketAddress("localhost", 0));
-
- port = socket.getLocalPort();
- socket.close();
- }
-
- /**
* Makes a parameter configuration file.
*
* @throws Exception if an error occurs
*/
private static void makeConfigFile() throws Exception {
- Map<String, Object> params = new HashMap<>();
- params.put("host", "0.0.0.0");
- params.put("port", port);
- params.put("userName", "healthcheck");
- params.put("password", "zb!XztG34");
- params.put("https", true);
+ Map<String, Object> restParams = new HashMap<>();
+ restParams.put("host", "0.0.0.0");
+ restParams.put("port", port);
+ restParams.put("userName", "healthcheck");
+ restParams.put("password", "zb!XztG34");
+ restParams.put("https", true);
+
+ Map<String, Object> pdpGroupDeploy = new HashMap<>();
+ pdpGroupDeploy.put("waitResponseMs", "0");
Map<String, Object> config = new HashMap<>();
config.put("name", "PapGroup");
- config.put("restServerParameters", params);
+ config.put("restServerParameters", restParams);
+ config.put("pdpGroupDeploymentParameters", pdpGroupDeploy);
File file = new File("src/test/resources/parameters/TestConfigParams.json");
file.deleteOnExit();
@@ -198,9 +186,12 @@ public class CommonPapRestServer {
systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
System.setProperties(systemProps);
- final String[] papConfigParameters = new String[2];
- papConfigParameters[0] = "-c";
- papConfigParameters[1] = "src/test/resources/parameters/TestConfigParams.json";
+ // @formatter:off
+ final String[] papConfigParameters = {
+ "-c", "src/test/resources/parameters/TestConfigParams.json",
+ "-p", "src/test/resources/parameters/topic.properties"
+ };
+ // @formatter:on
main = new Main(papConfigParameters);
@@ -231,6 +222,19 @@ public class CommonPapRestServer {
}
/**
+ * Verifies that unauthorized requests fail.
+ *
+ * @param endpoint the target end point
+ * @param sender function that sends the requests to the target
+ * @throws Exception if an error occurs
+ */
+ protected void checkUnauthRequest(final String endpoint, Function<Invocation.Builder, Response> sender)
+ throws Exception {
+ assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(),
+ sender.apply(sendNoAuthRequest(endpoint)).getStatus());
+ }
+
+ /**
* Sends a request to an endpoint.
*
* @param endpoint the target endpoint
@@ -238,45 +242,40 @@ public class CommonPapRestServer {
* @throws Exception if an error occurs
*/
protected Invocation.Builder sendRequest(final String endpoint) throws Exception {
- return sendFqeRequest(httpsPrefix + ENDPOINT_PREFIX + endpoint);
+ return sendFqeRequest(httpsPrefix + ENDPOINT_PREFIX + endpoint, true);
}
/**
- * Sends a request to a fully qualified endpoint.
+ * Sends a request to an endpoint, without any authorization header.
*
- * @param endpoint the fully qualified target endpoint
+ * @param endpoint the target endpoint
* @return a request builder
* @throws Exception if an error occurs
*/
- protected Invocation.Builder sendFqeRequest(final String fullyQualifiedEndpoint) throws Exception {
-
- // @formatter:off
- final TrustManager[] noopTrustManager = new TrustManager[] {
- new X509TrustManager() {
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
-
- @Override
- public void checkClientTrusted(final java.security.cert.X509Certificate[] certs,
- final String authType) {}
-
- @Override
- public void checkServerTrusted(final java.security.cert.X509Certificate[] certs,
- final String authType) {}
- }
- };
- // @formatter:on
+ protected Invocation.Builder sendNoAuthRequest(final String endpoint) throws Exception {
+ return sendFqeRequest(httpsPrefix + ENDPOINT_PREFIX + endpoint, false);
+ }
+ /**
+ * Sends a request to a fully qualified endpoint.
+ *
+ * @param fullyQualifiedEndpoint the fully qualified target endpoint
+ * @param includeAuth if authorization header should be included
+ * @return a request builder
+ * @throws Exception if an error occurs
+ */
+ protected Invocation.Builder sendFqeRequest(final String fullyQualifiedEndpoint, boolean includeAuth)
+ throws Exception {
final SSLContext sc = SSLContext.getInstance("TLSv1.2");
- sc.init(null, noopTrustManager, new SecureRandom());
+ sc.init(null, NetworkUtil.getAlwaysTrustingManager(), new SecureRandom());
final ClientBuilder clientBuilder =
ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
final Client client = clientBuilder.build();
- final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
- client.register(feature);
+
+ if (includeAuth) {
+ final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
+ client.register(feature);
+ }
final WebTarget webTarget = client.target(fullyQualifiedEndpoint);
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/PapRestControllerV1Test.java b/main/src/test/java/org/onap/policy/pap/main/rest/PapRestControllerV1Test.java
new file mode 100644
index 00000000..317ab1c1
--- /dev/null
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/PapRestControllerV1Test.java
@@ -0,0 +1,63 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP PAP
+ * ================================================================================
+ * Copyright (C) 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.main.rest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.UUID;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PapRestControllerV1Test {
+
+ private PapRestControllerV1 ctlr;
+ private ResponseBuilder bldr;
+
+ @Before
+ public void setUp() {
+ ctlr = new PapRestControllerV1();
+ bldr = Response.status(Response.Status.OK);
+ }
+
+ @Test
+ public void testAddVersionControlHeaders() {
+ Response resp = ctlr.addVersionControlHeaders(bldr).build();
+ assertEquals("0", resp.getHeaderString(PapRestControllerV1.VERSION_MINOR_NAME));
+ assertEquals("0", resp.getHeaderString(PapRestControllerV1.VERSION_PATCH_NAME));
+ assertEquals("1.0.0", resp.getHeaderString(PapRestControllerV1.VERSION_LATEST_NAME));
+ }
+
+ @Test
+ public void testAddLoggingHeaders_Null() {
+ Response resp = ctlr.addLoggingHeaders(bldr, null).build();
+ assertNotNull(resp.getHeaderString(PapRestControllerV1.REQUEST_ID_NAME));
+ }
+
+ @Test
+ public void testAddLoggingHeaders_NonNull() {
+ UUID uuid = UUID.randomUUID();
+ Response resp = ctlr.addLoggingHeaders(bldr, uuid).build();
+ assertEquals(uuid.toString(), resp.getHeaderString(PapRestControllerV1.REQUEST_ID_NAME));
+ }
+}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java
index 0ddfb3b5..6dd7103b 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java
@@ -46,6 +46,9 @@ public class TestHealthCheckRestControllerV1 extends CommonPapRestServer {
final Invocation.Builder invocationBuilder = sendRequest(HEALTHCHECK_ENDPOINT);
final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
+
+ // verify it fails when no authorization info is included
+ checkUnauthRequest(HEALTHCHECK_ENDPOINT, req -> req.get());
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteControllerV1.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteControllerV1.java
new file mode 100644
index 00000000..107c46ad
--- /dev/null
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteControllerV1.java
@@ -0,0 +1,79 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.pap.main.rest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.Response;
+import org.junit.Test;
+import org.onap.policy.models.pap.concepts.PdpGroupDeleteResponse;
+
+public class TestPdpGroupDeleteControllerV1 extends CommonPapRestServer {
+
+ private static final String DELETE_ENDPOINT = "pdps/groups";
+
+ @Test
+ public void testSwagger() throws Exception {
+ super.testSwagger(DELETE_ENDPOINT + "/{name}");
+ super.testSwagger(DELETE_ENDPOINT + "/{name}/versions/{version}");
+ }
+
+ @Test
+ public void testDeleteGroup() throws Exception {
+ String uri = DELETE_ENDPOINT + "/my-name";
+
+ Invocation.Builder invocationBuilder = sendRequest(uri);
+ Response rawresp = invocationBuilder.delete();
+ PdpGroupDeleteResponse resp = rawresp.readEntity(PdpGroupDeleteResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ rawresp = invocationBuilder.delete();
+ resp = rawresp.readEntity(PdpGroupDeleteResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ // verify it fails when no authorization info is included
+ checkUnauthRequest(uri, req -> req.delete());
+ }
+
+ @Test
+ public void testDeleteGroupVersion() throws Exception {
+ String uri = DELETE_ENDPOINT + "/my-name/versions/1.2.3";
+
+ Invocation.Builder invocationBuilder = sendRequest(uri);
+ Response rawresp = invocationBuilder.delete();
+ PdpGroupDeleteResponse resp = rawresp.readEntity(PdpGroupDeleteResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ rawresp = invocationBuilder.delete();
+ resp = rawresp.readEntity(PdpGroupDeleteResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ // verify it fails when no authorization info is included
+ checkUnauthRequest(uri, req -> req.delete());
+ }
+}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployControllerV1.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployControllerV1.java
new file mode 100644
index 00000000..d49f00cc
--- /dev/null
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployControllerV1.java
@@ -0,0 +1,78 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.pap.main.rest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.Arrays;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.junit.Test;
+import org.onap.policy.models.pap.concepts.PdpGroup;
+import org.onap.policy.models.pap.concepts.PdpGroupDeployResponse;
+import org.onap.policy.models.pap.concepts.PdpSubGroup;
+
+public class TestPdpGroupDeployControllerV1 extends CommonPapRestServer {
+
+ private static final String DEPLOY_ENDPOINT = "pdps";
+
+ @Test
+ public void testSwagger() throws Exception {
+ super.testSwagger(DEPLOY_ENDPOINT);
+ }
+
+ @Test
+ public void testDeploy() throws Exception {
+ Entity<PdpGroup> entgrp = makePdpGroupEntity();
+
+ Invocation.Builder invocationBuilder = sendRequest(DEPLOY_ENDPOINT);
+ Response rawresp = invocationBuilder.post(entgrp);
+ PdpGroupDeployResponse resp = rawresp.readEntity(PdpGroupDeployResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ rawresp = invocationBuilder.post(entgrp);
+ resp = rawresp.readEntity(PdpGroupDeployResponse.class);
+ assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+ assertNull(resp.getErrorDetails());
+
+ // verify it fails when no authorization info is included
+ checkUnauthRequest(DEPLOY_ENDPOINT, req -> req.post(entgrp));
+ }
+
+ private Entity<PdpGroup> makePdpGroupEntity() {
+ PdpSubGroup subgrp = new PdpSubGroup();
+ subgrp.setPdpType("drools");
+
+ PdpGroup group = new PdpGroup();
+ group.setName("drools-group");
+ group.setDescription("my description");
+ group.setVersion("my-version");
+ group.setPdpSubgroups(Arrays.asList(subgrp));
+
+ Entity<PdpGroup> entgrp = Entity.entity(group, MediaType.APPLICATION_JSON);
+ return entgrp;
+ }
+}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestStatisticsRestControllerV1.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestStatisticsRestControllerV1.java
index de142b51..9874389e 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestStatisticsRestControllerV1.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestStatisticsRestControllerV1.java
@@ -66,6 +66,9 @@ public class TestStatisticsRestControllerV1 extends CommonPapRestServer {
invocationBuilder = sendRequest(STATISTICS_ENDPOINT);
report = invocationBuilder.get(StatisticsReport.class);
validateStatisticsReport(report, 1, 200);
+
+ // verify it fails when no authorization info is included
+ checkUnauthRequest(STATISTICS_ENDPOINT, req -> req.get());
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/startstop/TestMain.java b/main/src/test/java/org/onap/policy/pap/main/startstop/TestMain.java
index 1f6b2baf..37da7e9b 100644
--- a/main/src/test/java/org/onap/policy/pap/main/startstop/TestMain.java
+++ b/main/src/test/java/org/onap/policy/pap/main/startstop/TestMain.java
@@ -52,7 +52,8 @@ public class TestMain {
@Test
public void testMain() throws PolicyPapException {
- final String[] papConfigParameters = {"-c", "parameters/PapConfigParameters.json"};
+ final String[] papConfigParameters =
+ {"-c", "parameters/PapConfigParameters.json", "-p", "parameters/topic.properties"};
main = new Main(papConfigParameters);
assertTrue(main.getParameters().isValid());
assertEquals(CommonTestData.PAP_GROUP_NAME, main.getParameters().getName());
diff --git a/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java b/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
index 5e611673..059ea0b4 100644
--- a/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
+++ b/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
@@ -27,6 +27,8 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import java.io.FileInputStream;
+import java.util.Properties;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -47,14 +49,23 @@ public class TestPapActivator {
/**
* Initializes an activator.
+ *
* @throws Exception if an error occurs
*/
@Before
public void setUp() throws Exception {
- final String[] papConfigParameters = { "-c", "parameters/PapConfigParameters.json" };
+ final String[] papConfigParameters =
+ {"-c", "parameters/PapConfigParameters.json", "-p", "parameters/topic.properties"};
final PapCommandLineArguments arguments = new PapCommandLineArguments(papConfigParameters);
final PapParameterGroup parGroup = new PapParameterHandler().getParameters(arguments);
- activator = new PapActivator(parGroup);
+
+ Properties props = new Properties();
+ String propFile = arguments.getFullConfigurationFilePath();
+ try (FileInputStream stream = new FileInputStream(propFile)) {
+ props.load(stream);
+ }
+
+ activator = new PapActivator(parGroup, props);
}
/**
@@ -84,7 +95,6 @@ public class TestPapActivator {
@Test
public void testGetCurrent_testSetCurrent() {
- PapActivator.setCurrent(activator);
assertSame(activator, PapActivator.getCurrent());
}
diff --git a/main/src/test/resources/parameters/topic.properties b/main/src/test/resources/parameters/topic.properties
new file mode 100644
index 00000000..11c17dac
--- /dev/null
+++ b/main/src/test/resources/parameters/topic.properties
@@ -0,0 +1,22 @@
+# ============LICENSE_START=======================================================
+# ONAP PAP
+# ================================================================================
+# Copyright (C) 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=========================================================
+
+noop.sink.topics=POLICY-PDP-PAP
+noop.sink.topics.POLICY-PDP-PAP.servers=anyserver
+noop.source.topics=POLICY-PDP-PAP
+noop.source.topics.POLICY-PDP-PAP.servers=anyserver