import static org.mockito.Mockito.when;
import org.springframework.http.HttpStatus;
import org.springframework.web.reactive.function.client.WebClientResponseException;
-import org.springframework.web.reactive.function.client.WebClientResponseException.NotFound;
-import org.springframework.web.reactive.function.client.WebClientResponseException.ServiceUnavailable;
+import org.springframework.web.server.ResponseStatusException;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
StepVerifier
.create(result)
- .expectError(NotFound.class)
+ .expectErrorSatisfies((t) ->
+ {
+ assertThat(t).isInstanceOf(ResponseStatusException.class);
+ ResponseStatusException status = (ResponseStatusException)t;
+ assertThat(status.getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
+ assertThat(t.getMessage()).startsWith("404 NOT_FOUND \"Cause: 404 MESSAGE\";");
+ })
.verify();
}
.create(result)
.expectErrorSatisfies((t) ->
{
- assertThat(t).isInstanceOf(ServiceUnavailable.class);
+ assertThat(t).isInstanceOf(ResponseStatusException.class);
+ ResponseStatusException e = (ResponseStatusException)t;
+ assertThat(e.getStatus()).isEqualTo(HttpStatus.SERVICE_UNAVAILABLE);
assertThat(t.getMessage())
.startsWith(
- "503 Service Unavailable - Cause: " +
- Integer.toString(status.value()));
+ "503 SERVICE_UNAVAILABLE \"Cause: " +
+ Integer.toString(status.value()) +
+ " MESSAGE\";");
+ })
+ .verify();
+ }
+
+ @Test
+ @DisplayName("Internal error while fetching data from remote-server")
+ void testOtherErrors()
+ {
+ Mono<String> mono = Mono.error(new RuntimeException("Boom!"));
+ when(service.getRemoteText("foo")).thenReturn(mono);
+
+ Mono<String> result = controller.fetch("foo");
+
+ StepVerifier
+ .create(result)
+ .expectErrorSatisfies((t) ->
+ {
+ assertThat(t).isInstanceOf(ResponseStatusException.class);
+ ResponseStatusException e = (ResponseStatusException)t;
+ assertThat(e.getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
+ assertThat(t.getMessage()).startsWith("500 INTERNAL_SERVER_ERROR \"Cause: Boom!\";");
})
.verify();
}
WebClientResponseException exception(int status)
{
- return WebClientResponseException.create(status, "", null, null, null);
+ return WebClientResponseException.create(status, "MESSAGE", null, null, null);
}
}