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<String> 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<String> 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<String> 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