#include #include "ccm/infra/CprHttpClient.hpp" #include #include using namespace ccm; TEST_SUITE("CprHttpClient injected executor") { TEST_CASE("forwards URL to injected executor and returns payload") { std::string seenUrl; CprHttpClient client{ [&seenUrl](std::string_view url) -> Result { seenUrl = std::string(url); return Result::ok("body"); } }; const auto out = client.get("https://example.com/api?q=1"); REQUIRE(out.isOk()); CHECK(out.value() == "body"); CHECK(seenUrl == "https://example.com/api?q=1"); } TEST_CASE("propagates injected executor error as-is") { CprHttpClient client{ [](std::string_view) -> Result { return Result::err("HTTP 503 from https://example.com"); } }; const auto out = client.get("https://example.com"); REQUIRE(out.isErr()); CHECK(out.error() == "HTTP 503 from https://example.com"); } }