@Test public void testExpectFunctionThrowsException() throws Exception { ResponsePredicate predicate = ResponsePredicate.create(r -> { throw new IndexOutOfBoundsException("boom"); }); testExpectation(true, req -> req.expect(predicate), HttpServerResponse::end, ar -> { assertThat(ar.cause(), instanceOf(IndexOutOfBoundsException.class)); }); }
@Test public void testErrorConverterReturnsNull() throws Exception { ResponsePredicate predicate = ResponsePredicate.create(r -> { return ResponsePredicateResult.failure("boom"); }, r -> null); testExpectation(true, req -> req.expect(predicate), HttpServerResponse::end, ar -> { assertThat(ar.cause(), not(instanceOf(NullPointerException.class))); }); }
@Test public void testErrorConverterThrowsException() throws Exception { ResponsePredicate predicate = ResponsePredicate.create(r -> { return ResponsePredicateResult.failure("boom"); }, result -> { throw new IndexOutOfBoundsException(); }); testExpectation(true, req -> req.expect(predicate), HttpServerResponse::end, ar -> { assertThat(ar.cause(), instanceOf(IndexOutOfBoundsException.class)); }); }
@Test public void testExpectCustomExceptionWithResponseBody() throws Exception { UUID uuid = UUID.randomUUID(); ResponsePredicate predicate = ResponsePredicate.create(ResponsePredicate.SC_SUCCESS, ErrorConverter.createFullBody(result -> { JsonObject body = result.response().bodyAsJsonObject(); return new CustomException(UUID.fromString(body.getString("tag")), body.getString("message")); })); testExpectation(true, req -> req.expect(predicate), httpServerResponse -> { httpServerResponse .setStatusCode(400) .end(new JsonObject().put("tag", uuid.toString()).put("message", "tilt").toBuffer()); }, ar -> { Throwable cause = ar.cause(); assertThat(cause, instanceOf(CustomException.class)); CustomException customException = (CustomException) cause; assertEquals("tilt", customException.getMessage()); assertEquals(uuid, customException.tag); }); }
@Test public void testExpectCustomException() throws Exception { ResponsePredicate predicate = ResponsePredicate.create(r -> ResponsePredicateResult.failure("boom"), result -> new CustomException(result.message())); testExpectation(true, req -> req.expect(predicate), HttpServerResponse::end, ar -> { Throwable cause = ar.cause(); assertThat(cause, instanceOf(CustomException.class)); CustomException customException = (CustomException) cause; assertEquals("boom", customException.getMessage()); }); }