#include "expresscpp/console.hpp" #include "expresscpp/expresscpp.hpp" #include "expresscpp/fetch.hpp" #include "expresscpp/http_method.hpp" #include "expresscpp/types.hpp" #include "gtest/gtest.h" using namespace expresscpp; TEST(HttpMethods, TestDiffentMethods) { auto expresscpp = std::make_shared(); expresscpp->Get("/", [](auto /*req*/, auto res, auto /*next*/) { res->Send("get"); }); expresscpp->Post("/", [](auto /*req*/, auto res, auto /*next*/) { res->Send("post"); }); expresscpp->Delete("/", [](auto /*req*/, auto res, auto /*next*/) { res->Send("delete"); }); expresscpp->Patch("/", [](auto /*req*/, auto res, auto /*next*/) { res->Send("patch"); }); constexpr uint16_t port = 8081u; const std::string target = fmt::format("http://localhost:{}/", port); expresscpp->Listen(port, [&](auto ec) { EXPECT_FALSE(ec); const auto s_get = fetch(target, { HttpMethod::Get}); const auto s_post = fetch(target, { HttpMethod::Post}); const auto s_delete = fetch(target, { HttpMethod::Delete}); const auto s_patch = fetch(target, { HttpMethod::Patch}); EXPECT_EQ(s_get, "get"); EXPECT_EQ(s_post, "post"); EXPECT_EQ(s_patch, "patch"); EXPECT_EQ(s_delete, "delete"); }); } TEST(HttpMethods, TestStringToEnumConvertions) { EXPECT_EQ(getHttpMethodFromName("all"), HttpMethod::All); EXPECT_EQ(getHttpMethodFromName("GET"), HttpMethod::Get); EXPECT_EQ(getHttpMethodFromName("Post"), HttpMethod::Post); EXPECT_NE(getHttpMethodFromName("Post"), HttpMethod::Patch); EXPECT_EQ(getHttpMethodFromName("pUt"), HttpMethod::Put); EXPECT_THROW(getHttpMethodFromName("pasdt"), std::runtime_error); }