#include "expresscpp/console.hpp"
#include "expresscpp/expresscpp.hpp"
#include "expresscpp/fetch.hpp"
#include "gtest/gtest.h"
using namespace expresscpp;
constexpr uint16_t port = 8081u;
TEST(RoutingTests, ChainRouting) {
ExpressCpp app;
app.Use("/a")
.Get([](auto /*req*/, auto res, auto) { res->Send("get request a"); })
.Post([](auto /*req*/, auto res, auto) { res->Send("post request a"); })
.Put([](auto /*req*/, auto res, auto) { res->Send("put request a"); });
app.Use("/b")
.Get([](auto /*req*/, auto res, auto) { res->Send("get request b"); })
.Post([](auto /*req*/, auto res, auto) { res->Send("post request b"); })
.Put([](auto /*req*/, auto res, auto) { res->Send("put request b"); });
app.Listen(port, [](auto ec) {
{
EXPECT_FALSE(ec);
const auto get_response = fetch(fmt::format("localhost:{}/a", port), { HttpMethod::Get});
const auto post_response = fetch(fmt::format("localhost:{}/a", port), { HttpMethod::Post});
const auto put_response = fetch(fmt::format("localhost:{}/a", port), { HttpMethod::Put});
EXPECT_EQ(get_response, "get request a");
EXPECT_EQ(post_response, "post request a");
EXPECT_EQ(put_response, "put request a");
}
{
const auto get_response = fetch(fmt::format("localhost:{}/b", port), { HttpMethod::Get});
const auto post_response = fetch(fmt::format("localhost:{}/b", port), { HttpMethod::Post});
const auto put_response = fetch(fmt::format("localhost:{}/b", port), { HttpMethod::Put});
EXPECT_EQ(get_response, "get request b");
EXPECT_EQ(post_response, "post request b");
EXPECT_EQ(put_response, "put request b");
}
});
}