diff options
Diffstat (limited to 'src/zenserver-test/zenserver-test.cpp')
| -rw-r--r-- | src/zenserver-test/zenserver-test.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/zenserver-test/zenserver-test.cpp b/src/zenserver-test/zenserver-test.cpp index 8d5400294..0b2bc50c0 100644 --- a/src/zenserver-test/zenserver-test.cpp +++ b/src/zenserver-test/zenserver-test.cpp @@ -24,6 +24,10 @@ # include <atomic> # include <filesystem> +ZEN_THIRD_PARTY_INCLUDES_START +# include <asio.hpp> +ZEN_THIRD_PARTY_INCLUDES_END + # if ZEN_PLATFORM_WINDOWS # include <ppl.h> # include <process.h> @@ -109,6 +113,11 @@ main(int argc, char** argv) ServerClass = argv[++i]; } } + else if (std::string_view Arg(argv[i]); Arg.starts_with("--httpclient="sv)) + { + std::string_view Value = Arg.substr(13); + zen::SetDefaultHttpClientBackend(Value); + } else if (argv[i] == "--verbose"sv) { Verbose = true; @@ -341,6 +350,38 @@ TEST_CASE("http.package") CHECK_EQ(ResponsePackage, TestPackage); } +# if defined(ASIO_HAS_LOCAL_SOCKETS) +TEST_CASE("http.unixsocket") +{ + std::filesystem::path TestDir = TestEnv.CreateNewTestDir(); + std::filesystem::path SocketDir = TestEnv.CreateNewTestDir(); + std::string SocketPath = (SocketDir / "zen.sock").string(); + + ZenServerInstance Instance(TestEnv); + Instance.SetDataDir(TestDir); + const uint16_t PortNumber = Instance.SpawnServerAndWaitUntilReady(fmt::format("--http=asio --unix-socket {}", SocketPath)); + + // Connect via Unix socket (BaseUri still needed for Host header) + HttpClientSettings Settings; + Settings.UnixSocketPath = SocketPath; + HttpClient Http{fmt::format("http://localhost:{}", PortNumber), Settings, {}}; + + SUBCASE("GET over unix socket") + { + HttpClient::Response Res = Http.Get("/testing/hello"); + CHECK(Res.IsSuccess()); + } + + SUBCASE("POST echo over unix socket") + { + IoBuffer Body{IoBuffer::Wrap, "unix-test", 9}; + HttpClient::Response Res = Http.Post("/testing/echo", Body); + CHECK(Res.IsSuccess()); + CHECK(Res.ResponsePayload.GetView().EqualBytes(Body.GetView())); + } +} +# endif + TEST_SUITE_END(); # if 0 |