diff options
| author | Stefan Boberg <[email protected]> | 2021-09-08 21:39:05 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-08 21:39:05 +0200 |
| commit | 1bcaef5935937dd17bcaa117c65fd1ee8e5bd4af (patch) | |
| tree | 03c1e4cf44996c8812c9904c4a33c8e553d4a647 | |
| parent | Introduced dedicated HTTP testing service, used during development to exercis... (diff) | |
| download | zen-1bcaef5935937dd17bcaa117c65fd1ee8e5bd4af.tar.xz zen-1bcaef5935937dd17bcaa117c65fd1ee8e5bd4af.zip | |
Basic http tests, needs a lot more tests to exercise more functionality
| -rw-r--r-- | zenserver-test/zenserver-test.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp index 455ab2495..e71b7f730 100644 --- a/zenserver-test/zenserver-test.cpp +++ b/zenserver-test/zenserver-test.cpp @@ -1380,4 +1380,97 @@ TEST_CASE("mesh.basic") } } +class ZenServerTestHelper +{ +public: + ZenServerTestHelper(std::string_view HelperId, int ServerCount) + : m_HelperId{HelperId} + , m_ServerCount{ServerCount} + { + } + ~ZenServerTestHelper() {} + + void SpawnServers() + { + SpawnServers([](ZenServerInstance&) {}); + } + + void SpawnServers(auto&& Callback) + { + spdlog::info("{}: spawning {} server instances", m_HelperId, m_ServerCount); + + m_Instances.resize(m_ServerCount); + + for (int i = 0; i < m_ServerCount; ++i) + { + auto& Instance = m_Instances[i]; + + Instance = std::make_unique<ZenServerInstance>(TestEnv); + Instance->SetTestDir(TestEnv.CreateNewTestDir()); + + Callback(*Instance); + + Instance->SpawnServer(13337 + i); + } + + for (int i = 0; i < m_ServerCount; ++i) + { + auto& Instance = m_Instances[i]; + + Instance->WaitUntilReady(); + } + } + + ZenServerInstance& GetInstance(int Index) { return *m_Instances[Index]; } + +private: + std::string m_HelperId; + int m_ServerCount = 0; + std::vector<std::unique_ptr<ZenServerInstance> > m_Instances; +}; + +TEST_CASE("http.basics") +{ + using namespace std::literals; + + ZenServerTestHelper Servers{"http.basics"sv, 1}; + Servers.SpawnServers(); + + ZenServerInstance& Instance = Servers.GetInstance(0); + const std::string BaseUri = Instance.GetBaseUri(); + + { + cpr::Response r = cpr::Get(cpr::Url{"{}/testing/hello"_format(BaseUri)}); + CHECK_EQ(r.status_code, 200); + } + + { + cpr::Response r = cpr::Post(cpr::Url{"{}/testing/hello"_format(BaseUri)}); + CHECK_EQ(r.status_code, 404); + } + + { + cpr::Response r = cpr::Post(cpr::Url{"{}/testing/echo"_format(BaseUri)}, cpr::Body{"yoyoyoyo"}); + CHECK_EQ(r.status_code, 200); + CHECK_EQ(r.text, "yoyoyoyo"); + } +} + +TEST_CASE("http.package") +{ + using namespace std::literals; + + ZenServerTestHelper Servers{"http.package"sv, 1}; + Servers.SpawnServers(); + + ZenServerInstance& Instance = Servers.GetInstance(0); + const std::string BaseUri = Instance.GetBaseUri(); + + { + cpr::Response r = cpr::Post(cpr::Url{"{}/testing/package"_format(BaseUri)}, cpr::Body{"yoyoyoyo"}); + CHECK_EQ(r.status_code, 200); + CHECK_EQ(r.text, "yoyoyoyo"); + } +} + #endif |