Add Visione backend foundation
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#define DROGON_TEST_MAIN
|
||||
#include <drogon/HttpClient.h>
|
||||
#include <drogon/drogon.h>
|
||||
#include <drogon/drogon_test.h>
|
||||
|
||||
#include <future>
|
||||
|
||||
using namespace drogon;
|
||||
|
||||
namespace
|
||||
{
|
||||
std::pair<ReqResult, HttpResponsePtr> sendRequest(const HttpRequestPtr &request)
|
||||
{
|
||||
auto client = HttpClient::newHttpClient("http://127.0.0.1:15555",
|
||||
app().getLoop());
|
||||
auto promise =
|
||||
std::make_shared<std::promise<std::pair<ReqResult, HttpResponsePtr>>>();
|
||||
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<void> 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;
|
||||
}
|
||||
Reference in New Issue
Block a user