Skip to content

Commit 9f7dd9f

Browse files
committed
Add test for usage of bodyToMono in WebClient.ResponseSpec::onStatus
See gh-23365
1 parent 3a39b7f commit 9f7dd9f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,34 @@ void nullJsonResponseShouldBeReadAsEmpty(ClientHttpConnector connector) {
10991099
.verifyComplete();
11001100
}
11011101

1102+
@ParameterizedWebClientTest
1103+
void mapBodyInOnStatus(ClientHttpConnector connector) {
1104+
startServer(connector);
1105+
1106+
prepareResponse(response -> response
1107+
.setResponseCode(500)
1108+
.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
1109+
.setBody("{\"fooValue\":\"bar\"}")
1110+
);
1111+
1112+
Mono<String> result = this.webClient.get()
1113+
.uri("/json")
1114+
.retrieve()
1115+
.onStatus(HttpStatus::isError, response ->
1116+
response.bodyToMono(Foo.class)
1117+
.flatMap(foo -> Mono.error(new MyException(foo.getFooValue())))
1118+
)
1119+
.bodyToMono(String.class);
1120+
1121+
StepVerifier.create(result)
1122+
.consumeErrorWith(throwable -> {
1123+
assertThat(throwable).isInstanceOf(MyException.class);
1124+
MyException error = (MyException) throwable;
1125+
assertThat(error.getMessage()).isEqualTo("bar");
1126+
})
1127+
.verify();
1128+
}
1129+
11021130

11031131
private void prepareResponse(Consumer<MockResponse> consumer) {
11041132
MockResponse response = new MockResponse();

0 commit comments

Comments
 (0)