use of org.springframework.http.client.reactive.ClientHttpResponse in project spring-framework by spring-projects.
the class WebTestClientConnectorTests method captureAndClaim.
@Test
@SuppressWarnings("deprecation")
public void captureAndClaim() throws Exception {
ClientHttpRequest request = new MockClientHttpRequest(HttpMethod.GET, "/test");
ClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
ClientHttpConnector connector = (method, uri, fn) -> fn.apply(request).then(Mono.just(response));
ClientRequest clientRequest = ClientRequest.method(HttpMethod.GET, URI.create("/test")).header(WiretapConnector.REQUEST_ID_HEADER_NAME, "1").build();
WiretapConnector wiretapConnector = new WiretapConnector(connector);
ExchangeFunction function = ExchangeFunctions.create(wiretapConnector);
function.exchange(clientRequest).blockMillis(0);
ExchangeResult actual = wiretapConnector.claimRequest("1");
assertNotNull(actual);
assertEquals(HttpMethod.GET, actual.getMethod());
assertEquals("/test", actual.getUrl().toString());
}
use of org.springframework.http.client.reactive.ClientHttpResponse in project spring-framework by spring-projects.
the class HttpHandlerConnector method connect.
@Override
public Mono<ClientHttpResponse> connect(HttpMethod httpMethod, URI uri, Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {
MonoProcessor<ClientHttpResponse> result = MonoProcessor.create();
MockClientHttpRequest mockClientRequest = new MockClientHttpRequest(httpMethod, uri);
MockServerHttpResponse mockServerResponse = new MockServerHttpResponse();
mockClientRequest.setWriteHandler(requestBody -> {
log("Invoking HttpHandler for ", httpMethod, uri);
ServerHttpRequest mockServerRequest = adaptRequest(mockClientRequest, requestBody);
this.handler.handle(mockServerRequest, mockServerResponse).subscribe(aVoid -> {
}, result::onError);
return Mono.empty();
});
mockServerResponse.setWriteHandler(responseBody -> {
log("Creating client response for ", httpMethod, uri);
result.onNext(adaptResponse(mockServerResponse, responseBody));
return Mono.empty();
});
log("Writing client request for ", httpMethod, uri);
requestCallback.apply(mockClientRequest).subscribe(aVoid -> {
}, result::onError);
return result;
}
use of org.springframework.http.client.reactive.ClientHttpResponse in project spring-framework by spring-projects.
the class HttpHandlerConnectorTests method adaptResponse.
@Test
public void adaptResponse() throws Exception {
ResponseCookie cookie = ResponseCookie.from("custom-cookie", "c0").build();
TestHttpHandler handler = new TestHttpHandler(response -> {
response.setStatusCode(HttpStatus.OK);
response.getHeaders().put("custom-header", Arrays.asList("h0", "h1"));
response.getCookies().add(cookie.getName(), cookie);
return response.writeWith(Mono.just(toDataBuffer("Custom body")));
});
ClientHttpResponse response = new HttpHandlerConnector(handler).connect(HttpMethod.GET, URI.create("/custom-path"), ReactiveHttpOutputMessage::setComplete).block(Duration.ofSeconds(5));
assertEquals(HttpStatus.OK, response.getStatusCode());
assertEquals(Arrays.asList("h0", "h1"), response.getHeaders().get("custom-header"));
assertEquals(cookie, response.getCookies().getFirst("custom-cookie"));
DataBuffer buffer = response.getBody().blockFirst(Duration.ZERO);
assertEquals("Custom body", DataBufferTestUtils.dumpString(buffer, UTF_8));
}
Aggregations