From 3b60664a85d84233d3f2005d1758f256c8cbd547 Mon Sep 17 00:00:00 2001 From: micdzied Date: Thu, 7 Mar 2019 10:03:43 +0100 Subject: add get request test Change-Id: I94a4337ca2a335587382c9965f6543af619e16ea Issue-ID: DCAEGEN2-1315 Signed-off-by: micdzied --- rest-services/common-dependency/pom.xml | 5 ++ .../services/adapters/http/CloudHttpClient.java | 2 +- .../services/adapters/http/CloudHttpClientIT.java | 62 ++++++++++++++++++++-- 3 files changed, 64 insertions(+), 5 deletions(-) (limited to 'rest-services') diff --git a/rest-services/common-dependency/pom.xml b/rest-services/common-dependency/pom.xml index 1b34fb67..4bda1750 100644 --- a/rest-services/common-dependency/pom.xml +++ b/rest-services/common-dependency/pom.xml @@ -56,5 +56,10 @@ junit-jupiter-engine test + + io.projectreactor + reactor-test + test + \ No newline at end of file diff --git a/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java b/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java index 33c39fa6..f645bc91 100644 --- a/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java +++ b/rest-services/common-dependency/src/main/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClient.java @@ -58,7 +58,7 @@ public class CloudHttpClient { this(HttpClient.create().secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))); } - private CloudHttpClient(HttpClient httpClient) { + CloudHttpClient(HttpClient httpClient) { this.httpClient = httpClient; } diff --git a/rest-services/common-dependency/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClientIT.java b/rest-services/common-dependency/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClientIT.java index 2553b9be..328df2dc 100644 --- a/rest-services/common-dependency/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClientIT.java +++ b/rest-services/common-dependency/src/test/java/org/onap/dcaegen2/services/sdk/rest/services/adapters/http/CloudHttpClientIT.java @@ -20,24 +20,78 @@ package org.onap.dcaegen2.services.sdk.rest.services.adapters.http; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; +import reactor.netty.DisposableServer; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.server.HttpServer; +import reactor.netty.resources.ConnectionProvider; +import reactor.test.StepVerifier; class CloudHttpClientIT { + private static final String SAMPLE_URL = "/sampleURL"; + private static final int MAX_CONNECTIONS = 1; + private static final ConnectionProvider connectionProvider = ConnectionProvider.fixed("test", MAX_CONNECTIONS); + @Test public void post() { assertTrue(true); } @Test - public void get() { + public void patch() { assertTrue(true); } @Test - public void patch() { - assertTrue(true); + void successfulGetResponse() { + String sampleString = "sampleString"; + Mono response = Mono.just(sampleString); + DisposableServer server = + HttpServer.create() + .handle((req, resp) -> resp.sendString(response)) + .wiretap(true) + .bindNow(); + HttpClient httpClient = createHttpClientForContextWithAddress(server, connectionProvider); + CloudHttpClient cloudHttpClient = new CloudHttpClient(httpClient); + + Mono content = cloudHttpClient.get(SAMPLE_URL, String.class); + + StepVerifier.create(content) + .expectNext(sampleString) + .expectComplete() + .verify(); + server.disposeNow(); + } + + @Test + void errorGetRequest() { + DisposableServer server = + HttpServer.create() + .handle((req, resp) -> Mono.error(new Exception("returnError"))) + .wiretap(true) + .bindNow(); + HttpClient httpClient = createHttpClientForContextWithAddress(server, connectionProvider); + CloudHttpClient cloudHttpClient = new CloudHttpClient(httpClient); + + Mono content = cloudHttpClient.get(SAMPLE_URL, String.class); + + StepVerifier.create(content) + .expectError() + .verify(); + server.disposeNow(); + } + + private HttpClient createHttpClientForContextWithAddress(DisposableServer context) { + return createHttpClientForContextWithAddress(context, null); + } + + private HttpClient createHttpClientForContextWithAddress(DisposableServer disposableServer, + ConnectionProvider connectionProvider) { + HttpClient client = connectionProvider == null? HttpClient.create() : HttpClient.create(connectionProvider); + return client.addressSupplier(disposableServer::address).wiretap(true); } } \ No newline at end of file -- cgit 1.2.3-korg