aboutsummaryrefslogtreecommitdiff
path: root/zenserver/testing
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-08 21:38:20 +0200
committerStefan Boberg <[email protected]>2021-09-08 21:38:20 +0200
commit74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a (patch)
treed3b55f48abd50665eb4ec7f5022885061b2f604a /zenserver/testing
parentLog spawned process name (diff)
downloadzen-74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a.tar.xz
zen-74eeda8aa9c67ca9820b8f7dd98bc2da3f97748a.zip
Introduced dedicated HTTP testing service, used during development to exercise the server framework
Diffstat (limited to 'zenserver/testing')
-rw-r--r--zenserver/testing/httptest.cpp48
-rw-r--r--zenserver/testing/httptest.h34
2 files changed, 82 insertions, 0 deletions
diff --git a/zenserver/testing/httptest.cpp b/zenserver/testing/httptest.cpp
new file mode 100644
index 000000000..0639c2b53
--- /dev/null
+++ b/zenserver/testing/httptest.cpp
@@ -0,0 +1,48 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "httptest.h"
+
+namespace zen {
+
+HttpTestingService::HttpTestingService()
+{
+ m_Router.RegisterRoute(
+ "hello",
+ [this](HttpRouterRequest& Req) { Req.ServerRequest().WriteResponse(HttpResponse::OK); },
+ HttpVerb::kGet);
+
+ m_Router.RegisterRoute(
+ "echo",
+ [this](HttpRouterRequest& Req) {
+ IoBuffer Body = Req.ServerRequest().ReadPayload();
+ Req.ServerRequest().WriteResponse(HttpResponse::OK, HttpContentType::kBinary, Body);
+ },
+ HttpVerb::kPost);
+
+ m_Router.RegisterRoute("package", m_PackageHandler);
+}
+
+HttpTestingService::~HttpTestingService()
+{
+}
+
+const char*
+HttpTestingService::BaseUri() const
+{
+ return "/testing/";
+}
+
+void
+HttpTestingService::HandleRequest(HttpServerRequest& Request)
+{
+ m_Router.HandleRequest(Request);
+}
+
+void
+HttpTestingService::PackageHandler::HandleRequest(HttpRouterRequest& Req)
+{
+ IoBuffer Body = Req.ServerRequest().ReadPayload();
+ Req.ServerRequest().WriteResponse(HttpResponse::OK, HttpContentType::kBinary, Body);
+}
+
+} // namespace zen
diff --git a/zenserver/testing/httptest.h b/zenserver/testing/httptest.h
new file mode 100644
index 000000000..236d17ce7
--- /dev/null
+++ b/zenserver/testing/httptest.h
@@ -0,0 +1,34 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include <zencore/httpserver.h>
+
+#include <spdlog/spdlog.h>
+
+namespace zen {
+
+/**
+ * Test service to facilitate testing the HTTP framework and client interactions
+ */
+class HttpTestingService : public HttpService
+{
+public:
+ HttpTestingService();
+ ~HttpTestingService();
+
+ virtual const char* BaseUri() const override;
+ virtual void HandleRequest(HttpServerRequest& Request) override;
+
+private:
+ HttpRequestRouter m_Router;
+
+ struct PackageHandler : public PackageEndpointHandler
+ {
+ virtual void HandleRequest(HttpRouterRequest& Request) override;
+ };
+
+ PackageHandler m_PackageHandler;
+};
+
+} // namespace zen