feat: Integrate new webserver (#1722)

For #919.
The new web server is not using dosguard yet. It will be fixed by a
separate PR.
This commit is contained in:
Sergey Kuznetsov
2024-11-21 14:48:32 +00:00
committed by GitHub
parent fc3ba07f2e
commit c77154a5e6
90 changed files with 4029 additions and 683 deletions

View File

@@ -26,8 +26,10 @@
#include <boost/beast/http/verb.hpp>
#include <gtest/gtest.h>
#include <iterator>
#include <optional>
#include <string>
#include <utility>
using namespace web::ng;
namespace http = boost::beast::http;
@@ -176,6 +178,35 @@ INSTANTIATE_TEST_SUITE_P(
tests::util::NameGenerator
);
struct RequestHttpHeadersTest : RequestTest {
http::field const headerName_ = http::field::user_agent;
std::string const headerValue_ = "clio";
};
TEST_F(RequestHttpHeadersTest, httpHeaders_HttpRequest)
{
auto httpRequest = http::request<http::string_body>{http::verb::get, "/", 11};
httpRequest.set(headerName_, headerValue_);
Request const request{std::move(httpRequest)};
auto const& headersFromRequest = request.httpHeaders();
ASSERT_EQ(headersFromRequest.count(headerName_), 1);
ASSERT_EQ(std::distance(headersFromRequest.cbegin(), headersFromRequest.cend()), 1);
EXPECT_EQ(headersFromRequest.at(headerName_), headerValue_);
}
TEST_F(RequestHttpHeadersTest, httpHeaders_WsRequest)
{
Request::HttpHeaders headers;
headers.set(headerName_, headerValue_);
Request const request{"websocket message", headers};
auto const& headersFromRequest = request.httpHeaders();
ASSERT_EQ(std::distance(headersFromRequest.cbegin(), headersFromRequest.cend()), 1);
ASSERT_EQ(headersFromRequest.count(headerName_), 1);
EXPECT_EQ(headersFromRequest.at(headerName_), headerValue_);
}
struct RequestHeaderValueTest : RequestTest {};
TEST_F(RequestHeaderValueTest, headerValue)