2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 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.common.endpoints.http.server.test;
23 import static org.junit.Assert.assertTrue;
25 import java.io.IOException;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Properties;
30 import javax.ws.rs.core.Response;
32 import org.junit.AfterClass;
33 import org.junit.BeforeClass;
34 import org.junit.Test;
35 import org.onap.policy.common.endpoints.http.client.HttpClient;
36 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
37 import org.onap.policy.common.endpoints.http.server.internal.JettyJerseyServer;
38 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
39 import org.onap.policy.common.utils.network.NetworkUtil;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
43 public class HttpClientTest {
44 private static final Logger logger = LoggerFactory.getLogger(HttpClientTest.class);
46 private static final HashMap<String, String> savedValuesMap = new HashMap<>();
49 * Setup before class method.
51 * @throws InterruptedException can be interrupted
52 * @throws IOException can have an IO exception
55 public static void setUp() throws InterruptedException, IOException {
56 logger.info("-- setup() --");
58 /* echo server - http + no auth */
60 final HttpServletServer echoServerNoAuth =
61 HttpServletServer.factory.build("echo", "localhost", 6666, "/", false, true);
62 echoServerNoAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
63 echoServerNoAuth.waitedStart(5000);
65 if (!NetworkUtil.isTcpPortOpen("localhost", echoServerNoAuth.getPort(), 5, 10000L)) {
66 throw new IllegalStateException("cannot connect to port " + echoServerNoAuth.getPort());
69 String keyStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
70 if (keyStoreSystemProperty != null) {
71 savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, keyStoreSystemProperty);
74 String keyStorePasswordSystemProperty =
75 System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
76 if (keyStorePasswordSystemProperty != null) {
78 JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, keyStorePasswordSystemProperty);
81 String trustStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
82 if (trustStoreSystemProperty != null) {
84 .put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, trustStoreSystemProperty);
87 String trustStorePasswordSystemProperty =
88 System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
89 if (trustStorePasswordSystemProperty != null) {
91 .put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, trustStorePasswordSystemProperty);
94 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
95 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, "kstest");
97 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
98 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, "kstest");
100 /* echo server - https + basic auth */
102 final HttpServletServer echoServerAuth =
103 HttpServletServer.factory.build("echo", true, "localhost", 6667, "/", false, true);
104 echoServerAuth.setBasicAuthentication("x", "y", null);
105 echoServerAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
106 echoServerAuth.waitedStart(5000);
108 if (!NetworkUtil.isTcpPortOpen("localhost", echoServerAuth.getPort(), 5, 10000L)) {
109 throw new IllegalStateException("cannot connect to port " + echoServerAuth.getPort());
114 * After the class is created method.
118 public static void tearDown() {
119 logger.info("-- tearDown() --");
121 HttpServletServer.factory.destroy();
122 HttpClient.factory.destroy();
124 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME)) {
125 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME,
126 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME));
127 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
129 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
132 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME)) {
133 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME,
134 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME));
135 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
137 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
140 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME)) {
141 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME,
142 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME));
143 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
145 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
148 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME)) {
149 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME,
150 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME));
151 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
153 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
160 public void testHttpNoAuthClient() throws Exception {
161 logger.info("-- testHttpNoAuthClient() --");
163 final HttpClient client = HttpClient.factory.build("testHttpNoAuthClient", false, false, "localhost", 6666,
164 "junit/echo", null, null, true);
165 final Response response = client.get("hello");
166 final String body = HttpClient.getBody(response, String.class);
168 assertTrue(response.getStatus() == 200);
169 assertTrue(body.equals("hello"));
173 public void testHttpAuthClient() throws Exception {
174 logger.info("-- testHttpAuthClient() --");
176 final HttpClient client = HttpClient.factory.build("testHttpAuthClient", true, true,"localhost", 6667,
177 "junit/echo", "x", "y", true);
178 final Response response = client.get("hello");
179 final String body = HttpClient.getBody(response, String.class);
181 assertTrue(response.getStatus() == 200);
182 assertTrue(body.equals("hello"));
186 public void testHttpAuthClient401() throws Exception {
187 logger.info("-- testHttpAuthClient401() --");
189 final HttpClient client = HttpClient.factory.build("testHttpAuthClient401", true, true, "localhost", 6667,
190 "junit/echo", null, null, true);
191 final Response response = client.get("hello");
192 assertTrue(response.getStatus() == 401);
196 public void testHttpAuthClientProps() throws Exception {
197 logger.info("-- testHttpAuthClientProps() --");
199 final Properties httpProperties = new Properties();
201 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, "PAP,PDP");
202 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
203 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
204 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
205 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
206 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
207 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
208 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
209 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
210 httpProperties.setProperty(
211 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
212 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
213 RestMockHealthCheck.class.getName());
214 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
215 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
217 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
218 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
219 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
220 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
221 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
222 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
223 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
224 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
225 httpProperties.setProperty(
226 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
227 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
228 RestMockHealthCheck.class.getName());
229 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
230 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
232 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "PAP,PDP");
233 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
234 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
235 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
236 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
237 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
238 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pap/test");
239 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
240 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
241 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
242 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
243 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
244 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
245 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
246 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
248 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
249 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
250 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
251 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
252 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
253 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pdp");
254 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
255 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
256 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
257 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
258 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
259 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
260 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
261 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
263 final List<HttpServletServer> servers = HttpServletServer.factory.build(httpProperties);
264 assertTrue(servers.size() == 2);
266 final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
267 assertTrue(clients.size() == 2);
269 for (final HttpServletServer server : servers) {
270 server.waitedStart(10000);
273 final HttpClient clientPAP = HttpClient.factory.get("PAP");
274 final Response response = clientPAP.get();
275 assertTrue(response.getStatus() == 200);
277 final HttpClient clientPDP = HttpClient.factory.get("PDP");
278 final Response response2 = clientPDP.get("test");
279 assertTrue(response2.getStatus() == 500);