89be293d2f
Catch2-based tests that fork+exec a local python3 http.server fixture per
test binary. Covers:
http_request:
- GET 200 with body
- GET 404 (HTTP error != transport error)
- POST with body + Content-Type
- bearer_token shortcut adds Authorization: Bearer
- basic_user/basic_pass shortcut adds HTTP Basic (curl --user)
- invalid URL surfaces transport error (status=0)
- timeout_ms is honored (bails before server's 3s sleep)
http_get_json:
- parses 200 JSON body
- throws std::runtime_error on 404
- bearer_token reaches server (verified via echoed Authorization header)
- throws std::runtime_error on invalid JSON body
Tests skip gracefully if python3 isn't available (server.start() returns
false; SUCCEED with skip message). No external network required.
Local runs (Linux): 21 assertions / 7 cases (http_request), 6 / 4 (get_json),
all passing.