Add handler for unknown status codes

See gh-31202
This commit is contained in:
Carl-Eric Menzel
2023-09-11 15:27:33 +02:00
committed by rstoyanchev
parent 9c5dcad0e5
commit d54a694f5a
3 changed files with 48 additions and 3 deletions

View File

@@ -672,6 +672,40 @@ class WebClientIntegrationTests {
});
}
@ParameterizedWebClientTest
void retrieve929CustomUnknownStatus(ClientHttpConnector connector) {
startServer(connector);
int errorStatus = 929;
assertThat(HttpStatus.resolve(errorStatus)).isNull();
String errorMessage = "Something went wrong";
prepareResponse(response -> response.setResponseCode(errorStatus)
.setHeader("Content-Type", "text/plain").setBody(errorMessage));
Mono<String> result = this.webClient.get()
.uri("/unknownPage")
.retrieve()
.bodyToMono(String.class);
StepVerifier.create(result)
.expectErrorSatisfies(throwable -> {
assertThat(throwable).isInstanceOf(UnknownHttpStatusCodeException.class);
UnknownHttpStatusCodeException ex = (UnknownHttpStatusCodeException) throwable;
assertThat(ex.getMessage()).isEqualTo(("Unknown status code ["+errorStatus+"]"));
assertThat(ex.getStatusCode().value()).isEqualTo(errorStatus);
assertThat(ex.getStatusText()).isEmpty();
assertThat(ex.getHeaders().getContentType()).isEqualTo(MediaType.TEXT_PLAIN);
assertThat(ex.getResponseBodyAsString()).isEqualTo(errorMessage);
})
.verify(Duration.ofSeconds(3));
expectRequestCount(1);
expectRequest(request -> {
assertThat(request.getHeader(HttpHeaders.ACCEPT)).isEqualTo("*/*");
assertThat(request.getPath()).isEqualTo("/unknownPage");
});
}
@ParameterizedWebClientTest
void postPojoAsJson(ClientHttpConnector connector) {
startServer(connector);