Skip to content

Failure not raised when testing with a HttpServer #31

Closed
@dadoonet

Description

@dadoonet

I'm not getting a failure when testing this code and I don't understand where I'm doing something bad.
Hopefully you can help :)

@ExtendWith(VertxExtension.class)
class VertxTest {

    private final Logger logger = LogManager.getLogger(this.getClass());

    @BeforeEach
    void deployVertice(Vertx vertx, VertxTestContext testContext) {
        vertx.deployVerticle(new FakeVertice(), testContext.succeeding(id -> {
            logger.info(" -> test webhook verticle deployed {}", id);
            logger.info("deployVertice {}", vertx.deploymentIDs());
        }));
    }

    @Test
    void testDeployVertice(Vertx vertx, VertxTestContext testContext) {
        testContext.verify(() -> {
            logger.info("testDeployVertice {}", vertx.deploymentIDs());
            assertFalse(vertx.deploymentIDs().isEmpty());
            testContext.completeNow();
        });
    }

    @Test
    void testPostValidate(Vertx vertx, VertxTestContext testContext) {
        // Create the WebClient to connect to our Vertx instance
        WebClient webClient = WebClient.create(vertx,
                new WebClientOptions()
                        .setDefaultHost("localhost")
                        .setDefaultPort(8080));

        HttpRequest<Buffer> request = webClient.get("/");
        request.send(testContext.succeeding(result -> testContext.verify(() -> {
            logger.fatal("CODE {}", result.statusCode());
            assertEquals(200, result.statusCode());

            logger.fatal("JSON {}", result.bodyAsString());
            logger.fatal("MESSAGE {}", result.bodyAsJsonObject().getString("message"));
            logger.fatal("JSON {}", result.bodyAsString());
        })));
    }


    static class FakeVertice extends AbstractVerticle {

        @Override
        public void start(Future<Void> futureVertx) {
            Router router = Router.router(vertx);
            router.route(HttpMethod.GET, "/")
                    .handler(routingContext -> {
                        // Write to the response and end it
                        HttpServerResponse response = routingContext.response();
                        response.setStatusCode(400);
                        String json = new JsonObject().put("message", "Vert.x is running!").encodePrettily();
                        response.putHeader("content-type", "application/json");
                        response.putHeader("content-length", "" + json.length());
                        response.write(json).end();
                    });

            vertx.createHttpServer().requestHandler(router::accept)
                    .listen(8080, ar -> {
                        if (ar.succeeded()) {
                            futureVertx.complete();
                        }
                        if (ar.failed()) {
                            futureVertx.fail("Can not start");
                        }
                    });

        }
    }
}

The test is passing and the log is:

19:06:13,351 INFO  [f.b.w.VertxTest]  -> test webhook verticle deployed 8e0df37a-78ac-4c8c-9692-be50cb81c3e2
19:06:13,353 INFO  [f.b.w.VertxTest] deployVertice [8e0df37a-78ac-4c8c-9692-be50cb81c3e2]
19:06:13,803 FATAL [f.b.w.VertxTest] CODE 400

Any idea?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions