Add WebRequest test

This commit is contained in:
SirLynix 2023-08-17 18:05:25 +02:00
parent 66f7e4b6ad
commit acf0c35e0c
1 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,75 @@
#include <Nazara/Core/Clock.hpp>
#include <Nazara/Network/Network.hpp>
#include <Nazara/Network/WebRequest.hpp>
#include <Nazara/Network/WebService.hpp>
#include <catch2/catch_test_macros.hpp>
#include <thread>
SCENARIO("WebService", "[NETWORK][WebService]")
{
std::unique_ptr<Nz::WebService> 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<Nz::WebRequest> 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<Nz::WebRequest> 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<Nz::WebRequest> 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();
}
}