2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2018 Samsung Electronics Co., Ltd.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.common.endpoints.http.server.test;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertTrue;
28 import java.security.KeyManagementException;
29 import java.security.NoSuchAlgorithmException;
30 import java.util.Collections;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Properties;
34 import javax.ws.rs.client.Entity;
35 import javax.ws.rs.core.MediaType;
36 import javax.ws.rs.core.Response;
37 import org.junit.AfterClass;
38 import org.junit.Before;
39 import org.junit.BeforeClass;
40 import org.junit.Test;
41 import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
42 import org.onap.policy.common.endpoints.http.client.HttpClient;
43 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
44 import org.onap.policy.common.endpoints.http.server.internal.JettyJerseyServer;
45 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
46 import org.onap.policy.common.utils.network.NetworkUtil;
48 public class HttpClientTest {
49 private static final String TEST_HTTP_NO_AUTH_CLIENT = "testHttpNoAuthClient";
50 private static final String TEST_HTTP_AUTH_CLIENT = "testHttpAuthClient";
51 private static final String LOCALHOST = "localhost";
52 private static final String JUNIT_ECHO = "junit/echo";
53 private static final String HELLO = "hello";
54 private static final String MY_VALUE = "myValue";
55 private static final String FALSE_STRING = "false";
56 private static final String ALPHA123 = "alpha123";
57 private static final String PUT_HELLO = "PUT:hello:{myParameter=myValue}";
58 private static final String DOT_GSON = "." + "GSON";
59 private static final String DOT_JACKSON = "." + "JACKSON";
60 private static final String DOT_PDP = "." + "PDP";
61 private static final String DOT_PAP = "." + "PAP";
63 private static final HashMap<String, String> savedValuesMap = new HashMap<>();
66 * Setup before class method.
68 * @throws InterruptedException can be interrupted
71 public static void setUpBeforeClass() throws InterruptedException {
72 /* echo server - http + no auth */
74 final HttpServletServer echoServerNoAuth =
75 HttpServletServer.factory.build("echo", LOCALHOST, 6666, "/", false, true);
76 echoServerNoAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
77 echoServerNoAuth.waitedStart(5000);
79 if (!NetworkUtil.isTcpPortOpen(LOCALHOST, echoServerNoAuth.getPort(), 5, 10000L)) {
80 throw new IllegalStateException("cannot connect to port " + echoServerNoAuth.getPort());
83 String keyStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
84 if (keyStoreSystemProperty != null) {
85 savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, keyStoreSystemProperty);
88 String keyStorePasswordSystemProperty =
89 System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
90 if (keyStorePasswordSystemProperty != null) {
91 savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME,
92 keyStorePasswordSystemProperty);
95 String trustStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
96 if (trustStoreSystemProperty != null) {
97 savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, trustStoreSystemProperty);
100 String trustStorePasswordSystemProperty =
101 System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
102 if (trustStorePasswordSystemProperty != null) {
103 savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME,
104 trustStorePasswordSystemProperty);
107 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
108 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, "kstest");
110 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
111 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, "kstest");
113 /* echo server - https + basic auth */
115 final HttpServletServer echoServerAuth =
116 HttpServletServer.factory.build("echo", true, LOCALHOST, 6667, "/", false, true);
117 echoServerAuth.setBasicAuthentication("x", "y", null);
118 echoServerAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
119 echoServerAuth.addFilterClass("/*", TestFilter.class.getName());
120 echoServerAuth.addFilterClass("/*", TestAuthorizationFilter.class.getName());
121 echoServerAuth.addFilterClass("/*", TestAafAuthFilter.class.getName());
122 echoServerAuth.addFilterClass("/*", TestAafGranularAuthFilter.class.getName());
123 echoServerAuth.waitedStart(5000);
125 if (!NetworkUtil.isTcpPortOpen(LOCALHOST, echoServerAuth.getPort(), 5, 10000L)) {
126 throw new IllegalStateException("cannot connect to port " + echoServerAuth.getPort());
131 * Clear https clients and reset providers.
134 public void setUp() {
135 HttpClient.factory.destroy();
137 MyGsonProvider.resetSome();
138 MyJacksonProvider.resetSome();
142 * After the class is created method.
145 public static void tearDownAfterClass() {
146 HttpServletServer.factory.destroy();
147 HttpClient.factory.destroy();
149 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME)) {
150 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME,
151 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME));
152 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
154 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
157 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME)) {
158 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME,
159 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME));
160 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
162 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
165 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME)) {
166 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME,
167 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME));
168 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
170 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
173 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME)) {
174 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME,
175 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME));
176 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
178 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
185 public void testHttpGetNoAuthClient() throws Exception {
186 final HttpClient client = getNoAuthHttpClient(TEST_HTTP_NO_AUTH_CLIENT, false,
188 final Response response = client.get(HELLO);
189 final String body = HttpClient.getBody(response, String.class);
191 assertEquals(200, response.getStatus());
192 assertEquals(HELLO, body);
196 public void testHttpPutNoAuthClient() throws Exception {
197 final HttpClient client = getNoAuthHttpClient(TEST_HTTP_NO_AUTH_CLIENT, false, 6666);
199 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
200 final Response response = client.put(HELLO, entity, Collections.emptyMap());
201 final String body = HttpClient.getBody(response, String.class);
203 assertEquals(200, response.getStatus());
204 assertEquals(PUT_HELLO, body);
208 public void testHttpPostNoAuthClient() throws Exception {
209 final HttpClient client = getNoAuthHttpClient(TEST_HTTP_NO_AUTH_CLIENT, false,
212 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
213 final Response response = client.post(HELLO, entity, Collections.emptyMap());
214 final String body = HttpClient.getBody(response, String.class);
216 assertEquals(200, response.getStatus());
217 assertEquals("POST:hello:{myParameter=myValue}", body);
221 public void testHttpDeletetNoAuthClient() throws Exception {
222 final HttpClient client = getNoAuthHttpClient(TEST_HTTP_NO_AUTH_CLIENT, false,
225 final Response response = client.delete(HELLO, Collections.emptyMap());
226 final String body = HttpClient.getBody(response, String.class);
228 assertEquals(200, response.getStatus());
229 assertEquals("DELETE:hello", body);
233 public void testHttpGetAuthClient() throws Exception {
234 final HttpClient client = getAuthHttpClient();
236 final Response response = client.get(HELLO);
237 final String body = HttpClient.getBody(response, String.class);
239 assertEquals(200, response.getStatus());
240 assertEquals(HELLO, body);
244 public void testHttpPutAuthClient() throws Exception {
245 final HttpClient client = getAuthHttpClient();
247 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
248 final Response response = client.put(HELLO, entity, Collections.emptyMap());
249 final String body = HttpClient.getBody(response, String.class);
251 assertEquals(200, response.getStatus());
252 assertEquals(PUT_HELLO, body);
256 public void testHttpPutAuthClient_JacksonProvider() throws Exception {
257 final HttpClient client = HttpClient.factory.build(BusTopicParams.builder().clientName(TEST_HTTP_AUTH_CLIENT)
258 .useHttps(true).allowSelfSignedCerts(true).hostname(LOCALHOST).port(6667)
259 .basePath(JUNIT_ECHO).userName("x").password("y").managed(true)
260 .serializationProvider(MyJacksonProvider.class.getName()).build());
262 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
263 final Response response = client.put(HELLO, entity, Collections.emptyMap());
264 final String body = HttpClient.getBody(response, String.class);
266 assertEquals(200, response.getStatus());
267 assertEquals(PUT_HELLO, body);
269 assertTrue(MyJacksonProvider.hasWrittenSome());
271 assertFalse(MyGsonProvider.hasWrittenSome());
275 public void testHttpPutAuthClient_GsonProvider() throws Exception {
276 final HttpClient client = HttpClient.factory.build(BusTopicParams.builder().clientName(TEST_HTTP_AUTH_CLIENT)
277 .useHttps(true).allowSelfSignedCerts(true).hostname(LOCALHOST).port(6667)
278 .basePath(JUNIT_ECHO).userName("x").password("y").managed(true)
279 .serializationProvider(MyGsonProvider.class.getName()).build());
281 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
282 final Response response = client.put(HELLO, entity, Collections.emptyMap());
283 final String body = HttpClient.getBody(response, String.class);
285 assertEquals(200, response.getStatus());
286 assertEquals(PUT_HELLO, body);
288 assertTrue(MyGsonProvider.hasWrittenSome());
290 assertFalse(MyJacksonProvider.hasWrittenSome());
294 public void testHttpAuthClient401() throws Exception {
295 final HttpClient client = getNoAuthHttpClient("testHttpAuthClient401", true,
297 final Response response = client.get(HELLO);
298 assertEquals(401, response.getStatus());
302 public void testHttpAuthClientProps() throws Exception {
303 final Properties httpProperties = new Properties();
305 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, "PAP,PDP");
306 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
307 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
308 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
309 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
310 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
311 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
312 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
313 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, ALPHA123);
314 httpProperties.setProperty(
315 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
316 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
317 RestMockHealthCheck.class.getName());
318 httpProperties.setProperty(
319 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PAP
320 + PolicyEndPointProperties.PROPERTY_HTTP_FILTER_CLASSES_SUFFIX,
321 TestFilter.class.getName());
322 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
323 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
325 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PDP
326 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
327 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PDP
328 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
329 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PDP
330 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
331 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PDP
332 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, ALPHA123);
333 httpProperties.setProperty(
334 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + DOT_PDP
335 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
336 RestMockHealthCheck.class.getName());
337 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
338 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
340 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "PAP,PDP");
341 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
342 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
343 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
344 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
345 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
346 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pap/test");
347 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
348 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, FALSE_STRING);
349 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
350 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
351 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
352 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, ALPHA123);
353 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PAP
354 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
356 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
357 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
358 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
359 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
360 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
361 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pdp");
362 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
363 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, FALSE_STRING);
364 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
365 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
366 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
367 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, ALPHA123);
368 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_PDP
369 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
371 final List<HttpServletServer> servers = HttpServletServer.factory.build(httpProperties);
372 assertEquals(2, servers.size());
374 final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
375 assertEquals(2, clients.size());
377 for (final HttpServletServer server : servers) {
378 server.waitedStart(10000);
381 final HttpClient clientPap = HttpClient.factory.get("PAP");
382 final Response response = clientPap.get();
383 assertEquals(200, response.getStatus());
385 final HttpClient clientPdp = HttpClient.factory.get("PDP");
386 final Response response2 = clientPdp.get("test");
387 assertEquals(500, response2.getStatus());
389 assertFalse(MyJacksonProvider.hasWrittenSome());
390 assertFalse(MyGsonProvider.hasWrittenSome());
394 public void testHttpAuthClientProps_MixedProviders() throws Exception {
395 final Properties httpProperties = new Properties();
397 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "GSON,JACKSON");
398 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
399 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
400 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
401 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "6666");
402 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
403 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, JUNIT_ECHO);
404 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
405 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, FALSE_STRING);
406 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
407 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
408 httpProperties.setProperty(
409 PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_GSON
410 + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER,
411 MyGsonProvider.class.getName());
413 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
414 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, LOCALHOST);
415 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
416 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "6666");
417 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
418 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, JUNIT_ECHO);
419 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
420 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, FALSE_STRING);
421 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
422 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
423 httpProperties.setProperty(
424 PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + DOT_JACKSON
425 + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER,
426 MyJacksonProvider.class.getName());
428 final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
429 assertEquals(2, clients.size());
431 Entity<MyEntity> entity = Entity.entity(new MyEntity(MY_VALUE), MediaType.APPLICATION_JSON);
434 MyGsonProvider.resetSome();
435 MyJacksonProvider.resetSome();
436 HttpClient client = HttpClient.factory.get("GSON");
438 Response response = client.put(HELLO, entity, Collections.emptyMap());
439 String body = HttpClient.getBody(response, String.class);
441 assertEquals(200, response.getStatus());
442 assertEquals(PUT_HELLO, body);
444 assertTrue(MyGsonProvider.hasWrittenSome());
445 assertFalse(MyJacksonProvider.hasWrittenSome());
447 // use jackson client
448 MyGsonProvider.resetSome();
449 MyJacksonProvider.resetSome();
450 client = HttpClient.factory.get("JACKSON");
452 response = client.put(HELLO, entity, Collections.emptyMap());
453 body = HttpClient.getBody(response, String.class);
455 assertEquals(200, response.getStatus());
456 assertEquals(PUT_HELLO, body);
458 assertTrue(MyJacksonProvider.hasWrittenSome());
459 assertFalse(MyGsonProvider.hasWrittenSome());
462 private HttpClient getAuthHttpClient()
463 throws KeyManagementException, NoSuchAlgorithmException, ClassNotFoundException {
464 return HttpClient.factory.build(BusTopicParams.builder().clientName(TEST_HTTP_AUTH_CLIENT)
465 .useHttps(true).allowSelfSignedCerts(true).hostname(LOCALHOST).port(6667).basePath(JUNIT_ECHO)
466 .userName("x").password("y").managed(true).build());
469 private HttpClient getNoAuthHttpClient(String clientName, boolean https, int port)
470 throws KeyManagementException, NoSuchAlgorithmException, ClassNotFoundException {
471 return HttpClient.factory.build(BusTopicParams.builder().clientName(clientName)
472 .useHttps(https).allowSelfSignedCerts(https).hostname(LOCALHOST).port(port).basePath(JUNIT_ECHO)
473 .userName(null).password(null).managed(true).build());
479 private String myParameter;
481 public MyEntity(final String myParameter) {
482 this.myParameter = myParameter;
485 public void setMyParameter(final String myParameter) {
486 this.myParameter = myParameter;
489 public String getMyParameter() {