#define DROGON_TEST_MAIN #include #include #include #include using namespace drogon; namespace { std::pair sendRequest(const HttpRequestPtr &request) { auto client = HttpClient::newHttpClient("http://127.0.0.1:15555", app().getLoop()); auto promise = std::make_shared>>(); auto future = promise->get_future(); client->sendRequest( request, [promise](ReqResult result, const HttpResponsePtr &response) { promise->set_value({result, response}); }); return future.get(); } } // namespace DROGON_TEST(HealthEndpoint) { auto request = HttpRequest::newHttpRequest(); request->setMethod(Get); request->setPath("/api/v1/health"); auto [result, response] = sendRequest(request); REQUIRE(result == ReqResult::Ok); REQUIRE(response != nullptr); CHECK(response->getStatusCode() == k200OK); REQUIRE(response->getJsonObject() != nullptr); CHECK((*response->getJsonObject())["status"].asString() == "ok"); CHECK((*response->getJsonObject())["service"].asString() == "visione-backend"); } int main(int argc, char **argv) { std::promise startedPromise; auto startedFuture = startedPromise.get_future(); app().addListener("127.0.0.1", 15555); std::thread serverThread([&startedPromise]() { app().getLoop()->queueInLoop([&startedPromise]() { startedPromise.set_value(); }); app().run(); }); startedFuture.get(); const int status = test::run(argc, argv); app().getLoop()->queueInLoop([]() { app().quit(); }); serverThread.join(); return status; }