aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-08 21:39:05 +0200
committerStefan Boberg <[email protected]>2021-09-08 21:39:05 +0200
commit1bcaef5935937dd17bcaa117c65fd1ee8e5bd4af (patch)
tree03c1e4cf44996c8812c9904c4a33c8e553d4a647
parentIntroduced dedicated HTTP testing service, used during development to exercis... (diff)
downloadzen-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.cpp93
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