Crafter.Network/tests/ShouldSendRecieveLargeHTTP/main.cpp
2026-07-22 17:55:45 +02:00

36 lines
1.3 KiB
C++

//SPDX-License-Identifier: LGPL-3.0-only
//SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
import Crafter.Network;
import Crafter.Thread;
import std;
using namespace Crafter;
int main() {
ThreadPool::Start();
QUICServerCredentials serverCreds;
serverCreds.selfSigned = true;
ListenerAsyncHTTP listener(8084, serverCreds, {{ "/", [&](const HTTPRequest& request) {
if (request.body.size() > 1'000'000) {
return CreateResponseHTTP("200", "Large request received: " + std::to_string(request.body.size()) + " bytes");
}
return CreateResponseHTTP("200", "Small request received");
}}});
try {
QUICClientCredentials clientCreds;
clientCreds.insecureNoServerValidation = true;
ClientHTTP client("localhost", 8084, clientCreds);
std::string large_body(10 * 1024 * 1024, 'A');
HTTPResponse response = client.Send(CreateRequestHTTP("POST", "/", "localhost", large_body));
if (response.status == "200" && response.body.find("Large request received") != std::string::npos) {
std::_Exit(0);
}
std::println("Unexpected response: {} {}", response.status, response.body);
return 1;
} catch (const std::exception& e) {
std::println("{}", e.what());
return 1;
}
}