X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiExchangeFilterFunctionIntegrationTest.java;h=306f04452326058e49df4b694c4ec63b7d533ff3;hb=15f9e41fc87c2cc44058af0b2822d96baf599c35;hp=2e3ae2248ee9bbf10cc8bcabf53f3740e0971dc1;hpb=cadda60f8110dc90e43b5c52b649ec5657be2953;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 2e3ae22..306f044 100644 --- a/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java +++ b/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java @@ -13,6 +13,7 @@ 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.WebClient; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -40,7 +41,6 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .builder() .clientConnector(new JettyClientHttpConnector()) .baseUrl(server.url("/").toString()) - .filter(GraphApiExchangeFilterFunction.INSTANCE) .build(); } @@ -74,6 +74,7 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .get() .uri("/egal") .retrieve() + .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) .bodyToMono(String.class); StepVerifier @@ -87,6 +88,66 @@ public class GraphApiExchangeFilterFunctionIntegrationTest assertEquals("(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); }) - .verifyLater(); + .verify(Duration.ofSeconds(3)); + } + + @Test + public void testTest() + { + server + .enqueue(new MockResponse() + .setResponseCode(400) + .setHeader("Content-Type", "text/plain") + .setBody("Hello Spring!")); + + Mono result; + + result = webClient.get() + .uri("/greeting?name=Spring") + .retrieve() + .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) + .bodyToMono(String.class); + + StepVerifier.create(result) + .expectError(Exception.class) + .verify(Duration.ofSeconds(3)); + + server + .enqueue(new MockResponse() + .setResponseCode(200) + .setHeader("Content-Type", "text/plain") + .setHeader("Foo", "Bar") + .setBody("Hello Spring!")); + + result = webClient.get() + .uri("/greeting?name=Spring") + .retrieve() + .onStatus(status -> status.is4xxClientError(), response -> GraphApiException.create(response)) + .bodyToMono(String.class); + + StepVerifier.create(result) + .expectNext("Hello Spring!") + .expectComplete() + .verify(Duration.ofSeconds(3)); + } + + public static ExchangeFilterFunction errorHandlingFilter() + { + return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> + { + if (clientResponse.statusCode() != null && (clientResponse.statusCode() + .is5xxServerError() || clientResponse.statusCode().is4xxClientError())) + { + return clientResponse.bodyToMono(String.class) + .flatMap(errorBody -> + { + return Mono.error(new Exception(errorBody)); + }); + } + else + { + return Mono.just(clientResponse); + } + }); } }