@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);
});
}