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.io.IOException;
29 import java.security.KeyManagementException;
30 import java.security.NoSuchAlgorithmException;
31 import java.util.Collections;
32 import java.util.HashMap;
33 import java.util.List;
34 import java.util.Properties;
35 import javax.ws.rs.client.Entity;
36 import javax.ws.rs.core.MediaType;
37 import javax.ws.rs.core.Response;
38 import org.junit.AfterClass;
39 import org.junit.Before;
40 import org.junit.BeforeClass;
41 import org.junit.Test;
42 import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
43 import org.onap.policy.common.endpoints.http.client.HttpClient;
44 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
45 import org.onap.policy.common.endpoints.http.server.internal.JettyJerseyServer;
46 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
47 import org.onap.policy.common.utils.network.NetworkUtil;
49 public class HttpClientTest {
50 private static final HashMap<String, String> savedValuesMap = new HashMap<>();
53 * Setup before class method.
55 * @throws InterruptedException can be interrupted
56 * @throws IOException can have an IO exception
59 public static void setUpBeforeClass() throws InterruptedException, IOException {
60 /* echo server - http + no auth */
62 final HttpServletServer echoServerNoAuth =
63 HttpServletServer.factory.build("echo", "localhost", 6666, "/", false, true);
64 echoServerNoAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
65 echoServerNoAuth.waitedStart(5000);
67 if (!NetworkUtil.isTcpPortOpen("localhost", echoServerNoAuth.getPort(), 5, 10000L)) {
68 throw new IllegalStateException("cannot connect to port " + echoServerNoAuth.getPort());
71 String keyStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
72 if (keyStoreSystemProperty != null) {
73 savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, keyStoreSystemProperty);
76 String keyStorePasswordSystemProperty =
77 System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
78 if (keyStorePasswordSystemProperty != null) {
79 savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME,
80 keyStorePasswordSystemProperty);
83 String trustStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
84 if (trustStoreSystemProperty != null) {
85 savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, trustStoreSystemProperty);
88 String trustStorePasswordSystemProperty =
89 System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
90 if (trustStorePasswordSystemProperty != null) {
91 savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME,
92 trustStorePasswordSystemProperty);
95 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
96 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, "kstest");
98 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, "src/test/resources/keystore-test");
99 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, "kstest");
101 /* echo server - https + basic auth */
103 final HttpServletServer echoServerAuth =
104 HttpServletServer.factory.build("echo", true, "localhost", 6667, "/", false, true);
105 echoServerAuth.setBasicAuthentication("x", "y", null);
106 echoServerAuth.addServletPackage("/*", HttpClientTest.class.getPackage().getName());
107 echoServerAuth.addFilterClass("/*", TestFilter.class.getCanonicalName());
108 echoServerAuth.addFilterClass("/*", TestAuthorizationFilter.class.getCanonicalName());
109 echoServerAuth.addFilterClass("/*", TestAafAuthFilter.class.getCanonicalName());
110 echoServerAuth.addFilterClass("/*", TestAafGranularAuthFilter.class.getCanonicalName());
111 echoServerAuth.waitedStart(5000);
113 if (!NetworkUtil.isTcpPortOpen("localhost", echoServerAuth.getPort(), 5, 10000L)) {
114 throw new IllegalStateException("cannot connect to port " + echoServerAuth.getPort());
119 * Clear https clients and reset providers.
122 public void setUp() {
123 HttpClient.factory.destroy();
125 MyGsonProvider.resetSome();
126 MyJacksonProvider.resetSome();
130 * After the class is created method.
133 public static void tearDownAfterClass() {
134 HttpServletServer.factory.destroy();
135 HttpClient.factory.destroy();
137 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME)) {
138 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME,
139 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME));
140 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
142 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME);
145 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME)) {
146 System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME,
147 savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME));
148 savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
150 System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME);
153 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME)) {
154 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME,
155 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME));
156 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
158 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME);
161 if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME)) {
162 System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME,
163 savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME));
164 savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
166 System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME);
173 public void testHttpGetNoAuthClient() throws Exception {
174 final HttpClient client = getNoAuthHttpClient("testHttpNoAuthClient", false,
176 final Response response = client.get("hello");
177 final String body = HttpClient.getBody(response, String.class);
179 assertEquals(200, response.getStatus());
180 assertEquals("hello", body);
184 public void testHttpPutNoAuthClient() throws Exception {
185 final HttpClient client = getNoAuthHttpClient("testHttpNoAuthClient", false, 6666);
187 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
188 final Response response = client.put("hello", entity, Collections.emptyMap());
189 final String body = HttpClient.getBody(response, String.class);
191 assertEquals(200, response.getStatus());
192 assertEquals("PUT:hello:{myParameter=myValue}", body);
196 public void testHttpPostNoAuthClient() throws Exception {
197 final HttpClient client = getNoAuthHttpClient("testHttpNoAuthClient", false,
200 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
201 final Response response = client.post("hello", entity, Collections.emptyMap());
202 final String body = HttpClient.getBody(response, String.class);
204 assertEquals(200, response.getStatus());
205 assertEquals("POST:hello:{myParameter=myValue}", body);
209 public void testHttpDeletetNoAuthClient() throws Exception {
210 final HttpClient client = getNoAuthHttpClient("testHttpNoAuthClient", false,
213 final Response response = client.delete("hello", Collections.emptyMap());
214 final String body = HttpClient.getBody(response, String.class);
216 assertEquals(200, response.getStatus());
217 assertEquals("DELETE:hello", body);
221 public void testHttpGetAuthClient() throws Exception {
222 final HttpClient client = getAuthHttpClient();
224 final Response response = client.get("hello");
225 final String body = HttpClient.getBody(response, String.class);
227 assertEquals(200, response.getStatus());
228 assertEquals("hello", body);
232 public void testHttpPutAuthClient() throws Exception {
233 final HttpClient client = getAuthHttpClient();
235 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
236 final Response response = client.put("hello", entity, Collections.emptyMap());
237 final String body = HttpClient.getBody(response, String.class);
239 assertEquals(200, response.getStatus());
240 assertEquals("PUT:hello:{myParameter=myValue}", body);
244 public void testHttpPutAuthClient_JacksonProvider() throws Exception {
245 final HttpClient client = HttpClient.factory.build(BusTopicParams.builder().clientName("testHttpAuthClient")
246 .useHttps(true).allowSelfSignedCerts(true).hostname("localhost").port(6667)
247 .basePath("junit/echo").userName("x").password("y").managed(true)
248 .serializationProvider(MyJacksonProvider.class.getCanonicalName()).build());
250 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
251 final Response response = client.put("hello", entity, Collections.emptyMap());
252 final String body = HttpClient.getBody(response, String.class);
254 assertEquals(200, response.getStatus());
255 assertEquals("PUT:hello:{myParameter=myValue}", body);
257 assertTrue(MyJacksonProvider.hasWrittenSome());
259 assertFalse(MyGsonProvider.hasWrittenSome());
263 public void testHttpPutAuthClient_GsonProvider() throws Exception {
264 final HttpClient client = HttpClient.factory.build(BusTopicParams.builder().clientName("testHttpAuthClient")
265 .useHttps(true).allowSelfSignedCerts(true).hostname("localhost").port(6667)
266 .basePath("junit/echo").userName("x").password("y").managed(true)
267 .serializationProvider(MyGsonProvider.class.getCanonicalName()).build());
269 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
270 final Response response = client.put("hello", entity, Collections.emptyMap());
271 final String body = HttpClient.getBody(response, String.class);
273 assertEquals(200, response.getStatus());
274 assertEquals("PUT:hello:{myParameter=myValue}", body);
276 assertTrue(MyGsonProvider.hasWrittenSome());
278 assertFalse(MyJacksonProvider.hasWrittenSome());
282 public void testHttpAuthClient401() throws Exception {
283 final HttpClient client = getNoAuthHttpClient("testHttpAuthClient401", true,
285 final Response response = client.get("hello");
286 assertEquals(401, response.getStatus());
290 public void testHttpAuthClientProps() throws Exception {
291 final Properties httpProperties = new Properties();
293 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, "PAP,PDP");
294 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
295 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
296 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
297 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
298 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
299 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
300 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
301 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
302 httpProperties.setProperty(
303 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
304 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
305 RestMockHealthCheck.class.getName());
306 httpProperties.setProperty(
307 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PAP"
308 + PolicyEndPointProperties.PROPERTY_HTTP_FILTER_CLASSES_SUFFIX,
309 TestFilter.class.getName());
310 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
311 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
313 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
314 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
315 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
316 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
317 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
318 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
319 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
320 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
321 httpProperties.setProperty(
322 PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + "PDP"
323 + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX,
324 RestMockHealthCheck.class.getName());
325 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
326 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
328 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "PAP,PDP");
329 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
330 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
331 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
332 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7777");
333 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
334 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pap/test");
335 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
336 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
337 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
338 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpap");
339 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
340 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
341 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PAP"
342 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
344 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
345 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
346 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
347 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "7778");
348 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
349 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "pdp");
350 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
351 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
352 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
353 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_USERNAME_SUFFIX, "testpdp");
354 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
355 + PolicyEndPointProperties.PROPERTY_HTTP_AUTH_PASSWORD_SUFFIX, "alpha123");
356 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "PDP"
357 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
359 final List<HttpServletServer> servers = HttpServletServer.factory.build(httpProperties);
360 assertEquals(2, servers.size());
362 final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
363 assertEquals(2, clients.size());
365 for (final HttpServletServer server : servers) {
366 server.waitedStart(10000);
369 final HttpClient clientPap = HttpClient.factory.get("PAP");
370 final Response response = clientPap.get();
371 assertEquals(200, response.getStatus());
373 final HttpClient clientPdp = HttpClient.factory.get("PDP");
374 final Response response2 = clientPdp.get("test");
375 assertEquals(500, response2.getStatus());
377 assertFalse(MyJacksonProvider.hasWrittenSome());
378 assertFalse(MyGsonProvider.hasWrittenSome());
382 public void testHttpAuthClientProps_MixedProviders() throws Exception {
383 final Properties httpProperties = new Properties();
385 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES, "GSON,JACKSON");
386 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
387 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
388 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
389 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "6666");
390 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
391 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "junit/echo");
392 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
393 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
394 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
395 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
396 httpProperties.setProperty(
397 PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "GSON"
398 + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER,
399 MyGsonProvider.class.getCanonicalName());
401 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
402 + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX, "localhost");
403 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
404 + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX, "6666");
405 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
406 + PolicyEndPointProperties.PROPERTY_HTTP_URL_SUFFIX, "junit/echo");
407 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
408 + PolicyEndPointProperties.PROPERTY_HTTP_HTTPS_SUFFIX, "false");
409 httpProperties.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
410 + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
411 httpProperties.setProperty(
412 PolicyEndPointProperties.PROPERTY_HTTP_CLIENT_SERVICES + "." + "JACKSON"
413 + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER,
414 MyJacksonProvider.class.getCanonicalName());
416 final List<HttpClient> clients = HttpClient.factory.build(httpProperties);
417 assertEquals(2, clients.size());
419 Entity<MyEntity> entity = Entity.entity(new MyEntity("myValue"), MediaType.APPLICATION_JSON);
422 MyGsonProvider.resetSome();
423 MyJacksonProvider.resetSome();
424 HttpClient client = HttpClient.factory.get("GSON");
426 Response response = client.put("hello", entity, Collections.emptyMap());
427 String body = HttpClient.getBody(response, String.class);
429 assertEquals(200, response.getStatus());
430 assertEquals("PUT:hello:{myParameter=myValue}", body);
432 assertTrue(MyGsonProvider.hasWrittenSome());
433 assertFalse(MyJacksonProvider.hasWrittenSome());
435 // use jackson client
436 MyGsonProvider.resetSome();
437 MyJacksonProvider.resetSome();
438 client = HttpClient.factory.get("JACKSON");
440 response = client.put("hello", entity, Collections.emptyMap());
441 body = HttpClient.getBody(response, String.class);
443 assertEquals(200, response.getStatus());
444 assertEquals("PUT:hello:{myParameter=myValue}", body);
446 assertTrue(MyJacksonProvider.hasWrittenSome());
447 assertFalse(MyGsonProvider.hasWrittenSome());
450 private HttpClient getAuthHttpClient()
451 throws KeyManagementException, NoSuchAlgorithmException, ClassNotFoundException {
452 return HttpClient.factory.build(BusTopicParams.builder().clientName("testHttpAuthClient")
453 .useHttps(true).allowSelfSignedCerts(true).hostname("localhost").port(6667).basePath("junit/echo")
454 .userName("x").password("y").managed(true).build());
457 private HttpClient getNoAuthHttpClient(String clientName, boolean https, int port)
458 throws KeyManagementException, NoSuchAlgorithmException, ClassNotFoundException {
459 return HttpClient.factory.build(BusTopicParams.builder().clientName(clientName)
460 .useHttps(https).allowSelfSignedCerts(https).hostname("localhost").port(port).basePath("junit/echo")
461 .userName(null).password(null).managed(true).build());
467 private String myParameter;
469 public MyEntity(final String myParameter) {
470 this.myParameter = myParameter;
473 public void setMyParameter(final String myParameter) {
474 this.myParameter = myParameter;
477 public String getMyParameter() {