X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiExchangeFilterFunctionIntegrationTest.java;h=53b2e6a31628957662ae6b7a9a296c07c10fe399;hb=2ee955aa31aac3dff18457f032fce4ed15049cd2;hp=227c3e0fc50315fd96833c7b2db13ea1cf97fcc8;hpb=4c895bd50333c02fa540eafe5b5ec0a442f48b74;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 227c3e0..53b2e6a 100644 --- a/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java +++ b/src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java @@ -2,11 +2,11 @@ package de.juplo.facebook.errors; import de.juplo.facebook.errors.GraphApiException.Type; -import java.time.Duration; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import org.junit.After; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -14,6 +14,8 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.client.reactive.JettyClientHttpConnector; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException.BadRequest; +import org.springframework.web.reactive.function.client.WebClientResponseException.InternalServerError; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -54,22 +56,27 @@ public class GraphApiExchangeFilterFunctionIntegrationTest @Test public void testNoError() { + Mono result; + + //server // .enqueue(new MockResponse() // .setResponseCode(HttpStatus.CONTINUE.value()) // .setHeader("Content-Type", "application/json") // .setBody("Hallo Welt!")); // - //try - //{ - // String result = clientTemplate.getForObject(uri, String.class); - // assertEquals("Hallo Welt!", result); - //} - //catch(Exception e) - //{ - // LOG.debug("{}", e.toString()); - // fail("Unexpected error: " + e); - //} + //result = + // webClient + // .get() + // .uri("/egal") + // .retrieve() + // .bodyToMono(String.class); + // + //StepVerifier + // .create(result) + // .expectNext("Hallo Welt!") + // .expectComplete() + // .verify(); server @@ -78,34 +85,44 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .setHeader("Content-Type", "text/plain") .setBody("Hallo Welt!")); - try - { - String result = clientTemplate.getForObject(uri, String.class); - assertEquals("Hallo Welt!", result); - } - catch(Exception e) - { - LOG.debug("{}", e.toString()); - fail("Unexpected error: " + e); - } + result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier + .create(result) + .expectNext("Hallo Welt!") + .expectComplete() + .verify(); server .enqueue(new MockResponse() .setResponseCode(HttpStatus.TEMPORARY_REDIRECT.value()) + .setHeader("Location", server.url("/woanders")) + .setHeader("Content-Type", "text/plain") + .setBody("Jetzt doch woanders...")); + server + .enqueue(new MockResponse() + .setResponseCode(HttpStatus.OK.value()) .setHeader("Content-Type", "text/plain") .setBody("Hallo Welt!")); - try - { - String result = clientTemplate.getForObject(uri, String.class); - assertEquals("Hallo Welt!", result); - } - catch(Exception e) - { - LOG.debug("{}", e.toString()); - fail("Unexpected error: " + e); - } + result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier + .create(result) + .expectNext("Hallo Welt!") + .expectComplete() + .verify(); server @@ -114,20 +131,17 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .setHeader("Content-Type", "text/plain") .setBody("Hallo Welt!")); - try - { - clientTemplate.getForObject(uri, String.class); - fail("The parent handler should have raised an exception!"); - } - catch(HttpServerErrorException e) - { - LOG.debug("Expexted error: {}", e.toString()); - } - catch(Exception e) - { - LOG.debug("{}", e.toString()); - fail("Unexpected error: " + e); - } + result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier + .create(result) + .expectError(InternalServerError.class) + .verify(); } @Test @@ -147,18 +161,23 @@ public class GraphApiExchangeFilterFunctionIntegrationTest " }\n" + "}")); - try - { - clientTemplate.getForObject(uri, String.class); - fail("The expected exception was not thrown"); - } - catch(RateLimitExceededException e) + Mono result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier.create(result).expectErrorSatisfies(throwable -> { + assertEquals(RateLimitExceededException.class, throwable.getClass()); + RateLimitExceededException e = (RateLimitExceededException)throwable; LOG.debug("{}", e.toString()); assertEquals(new Integer(613), e.getCode()); assertEquals("(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); - } + }) + .verify(); } @Test @@ -178,13 +197,18 @@ public class GraphApiExchangeFilterFunctionIntegrationTest " }\n" + "}")); - try - { - clientTemplate.getForObject(uri, String.class); - fail("The expected exception was not thrown"); - } - catch(GraphApiException e) + + Mono result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier.create(result).expectErrorSatisfies(throwable -> { + assertEquals(UnmappedErrorException.class, throwable.getClass()); + UnmappedErrorException e = (UnmappedErrorException)throwable; LOG.debug("{}", e.toString()); assertEquals(new Integer(999999999), e.getCode()); assertEquals("This error does not exist.", e.getMessage()); @@ -195,12 +219,16 @@ public class GraphApiExchangeFilterFunctionIntegrationTest fail("unmapped type was resolved by enum: " + type); } catch (IllegalArgumentException ee) {} - } + }) + .verify(); } @Test public void testInvlalidError() { + Mono result; + + server .enqueue(new MockResponse() .setResponseCode(HttpStatus.BAD_REQUEST.value()) @@ -215,20 +243,14 @@ public class GraphApiExchangeFilterFunctionIntegrationTest " }\n" + "}")); - try - { - clientTemplate.getForObject(uri, String.class); - fail("The parent handler should have raised an exception!"); - } - catch(HttpClientErrorException e) - { - LOG.debug("Expexted error: {}", e.toString()); - } - catch(Exception e) - { - LOG.debug("{}", e.toString()); - fail("Unexpected error: " + e); - } + result = + webClient + .get() + .uri("/egal") + .retrieve() + .bodyToMono(String.class); + + StepVerifier.create(result).expectError(BadRequest.class).verify(); server @@ -237,58 +259,13 @@ public class GraphApiExchangeFilterFunctionIntegrationTest .setHeader("Content-Type", "text/plain") .setBody("Hallo Welt!")); - try - { - clientTemplate.getForObject(uri, String.class); - fail("The parent handler should have raised an exception!"); - } - catch(HttpClientErrorException e) - { - LOG.debug("Expexted error: {}", e.toString()); - } - catch(Exception e) - { - LOG.debug("{}", e.toString()); - fail("Unexpected error: " + e); - } - } - - @Test - public void testValidError() - { - server - .enqueue(new MockResponse() - .setResponseCode(HttpStatus.BAD_REQUEST.value()) - .setHeader("Content-Type", "application/json") - .setBody( - "{\n" + - " \"error\":\n" + - " {\n" + - " \"message\": \"(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.\",\n" + - " \"type\": \"OAuthException\",\n" + - " \"code\": 613\n" + - " }\n" + - "}")); - - - Mono result = + result = webClient .get() .uri("/egal") .retrieve() .bodyToMono(String.class); - StepVerifier - .create(result) - .expectErrorSatisfies(throwable -> - { - assertEquals(RateLimitExceededException.class, throwable.getClass()); - RateLimitExceededException e = (RateLimitExceededException)throwable; - LOG.debug("{}", e.toString()); - assertEquals(new Integer(613), e.getCode()); - assertEquals("(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.", e.getMessage()); - assertEquals(Type.OAuthException, e.getType()); - }) - .verify(Duration.ofSeconds(3)); + StepVerifier.create(result).expectError(BadRequest.class).verify(); } }