From acf0c35e0ca3cdff8e973626fdb9e91f09556e31 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Thu, 17 Aug 2023 18:05:25 +0200 Subject: [PATCH] Add WebRequest test --- .../Engine/Network/WebRequestTests.cpp | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 tests/UnitTests/Engine/Network/WebRequestTests.cpp diff --git a/tests/UnitTests/Engine/Network/WebRequestTests.cpp b/tests/UnitTests/Engine/Network/WebRequestTests.cpp new file mode 100644 index 000000000..a33465d90 --- /dev/null +++ b/tests/UnitTests/Engine/Network/WebRequestTests.cpp @@ -0,0 +1,75 @@ +#include +#include +#include +#include +#include +#include + +SCENARIO("WebService", "[NETWORK][WebService]") +{ + std::unique_ptr webService = Nz::Network::Instance()->InstantiateWebService(); + auto WaitForRequest = [&] + { + Nz::MillisecondClock clock; + while (!webService->Poll()) + { + if (clock.GetElapsedTime() >= Nz::Time::Seconds(2)) + { + INFO("WebRequest timed out"); + REQUIRE(false); + break; + } + + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + }; + + GIVEN("When performing a GET web request") + { + std::unique_ptr webRequest = webService->CreateGetRequest("https://test.digitalpulse.software", [&](const Nz::WebRequestResult& result) + { + REQUIRE(result); + CHECK(result.GetStatusCode() == 200); + CHECK(result.GetDownloadedSize() > 0); + CHECK(result.GetDownloadSpeed() > 0); + CHECK(result.GetBody() == "Hello Nazara from web!"); + }); + webService->QueueRequest(std::move(webRequest)); + + WaitForRequest(); + } + + GIVEN("When performing a GET web request on a non-existing URL") + { + std::unique_ptr webRequest = webService->CreateGetRequest("https://test.digitalpulse.software/404", [&](const Nz::WebRequestResult& result) + { + REQUIRE(result); + CHECK(result.GetStatusCode() == 404); + CHECK(result.GetDownloadedSize() > 0); + CHECK(result.GetDownloadSpeed() > 0); + }); + webService->QueueRequest(std::move(webRequest)); + + WaitForRequest(); + } + + GIVEN("When performing a POST web request") + { + std::unique_ptr webRequest = webService->CreatePostRequest("https://test.digitalpulse.software/headers", [&](const Nz::WebRequestResult& result) + { + REQUIRE(result); + CHECK(result.GetStatusCode() == 200); + CHECK(result.GetDownloadedSize() > 0); + CHECK(result.GetDownloadSpeed() > 0); + + INFO(result.GetBody()); + CHECK(result.GetBody().find("Authorization: Lynix") != std::string::npos); + }); + webRequest->SetJSonContent(R"({"value":42})"); + webRequest->SetHeader("Authorization", "Lynix"); + + webService->QueueRequest(std::move(webRequest)); + + WaitForRequest(); + } +}