X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiExchangeFilterFunctionIntegrationTest.java;h=8614735036e8127e4ce31a85403c5691ff9f7bb4;hb=d870be7a05e5de616bb3c551d3270d4b2d1c9530;hp=306f04452326058e49df4b694c4ec63b7d533ff3;hpb=15f9e41fc87c2cc44058af0b2822d96baf599c35;p=facebook-errors diff --git a/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java b/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java index 306f044..8614735 100644 --- a/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java +++ b/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java @@ -13,7 +13,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.client.reactive.JettyClientHttpConnector; -import org.springframework.web.reactive.function.client.ExchangeFilterFunction; +import org.springframework.web.reactive.function.client.ClientRequest; +import org.springframework.web.reactive.function.client.ClientResponse; +import org.springframework.web.reactive.function.client.ExchangeFunction; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -41,6 +43,7 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .builder() .clientConnector(new JettyClientHttpConnector()) .baseUrl(server.url("/").toString()) + .filter(this::errorHandlingFilter) .build(); } @@ -74,7 +77,6 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .get() .uri("/egal") .retrieve() - .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) .bodyToMono(String.class); StepVerifier @@ -105,7 +107,6 @@ public class GraphApiExchangeFilterFunctionIntegrationTest result = webClient.get() .uri("/greeting?name=Spring") .retrieve() - .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) .bodyToMono(String.class); StepVerifier.create(result) @@ -122,7 +123,6 @@ public class GraphApiExchangeFilterFunctionIntegrationTest result = webClient.get() .uri("/greeting?name=Spring") .retrieve() - .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) .bodyToMono(String.class); StepVerifier.create(result) @@ -131,23 +131,22 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .verify(Duration.ofSeconds(3)); } - public static ExchangeFilterFunction errorHandlingFilter() + public Mono errorHandlingFilter(ClientRequest request, ExchangeFunction next) { - return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> - { - if (clientResponse.statusCode() != null && (clientResponse.statusCode() - .is5xxServerError() || clientResponse.statusCode().is4xxClientError())) - { - return clientResponse.bodyToMono(String.class) - .flatMap(errorBody -> + return + next + .exchange(request) + .flatMap(response -> { - return Mono.error(new Exception(errorBody)); + return + HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series()) + ? response + .bodyToMono(String.class) + .flatMap(errorBody -> Mono.error(GraphApiException.create( + response.statusCode(), + response.headers().asHttpHeaders(), + errorBody.getBytes()))) + : Mono.just(response); }); - } - else - { - return Mono.just(clientResponse); - } - }); } }