wise-validator/tests/test_reporter.py

38 lines
1.1 KiB
Python
Raw Normal View History

"""State Hub reporter tests."""
import json
from unittest.mock import MagicMock, patch
from wisevalidator.models import RunResult
from wisevalidator.reporter import report
def test_report_posts_e2e_result() -> None:
result = RunResult(
sandbox_id="abc12345",
repo="fixture-repo",
passed=True,
exit_code=0,
duration_s=12.3,
output="ok",
)
captured: dict = {}
def fake_urlopen(req, timeout=10):
captured["url"] = req.full_url
captured["body"] = json.loads(req.data.decode())
resp = MagicMock()
resp.status = 201
resp.__enter__ = MagicMock(return_value=resp)
resp.__exit__ = MagicMock(return_value=False)
return resp
with patch("wisevalidator.reporter.urllib.request.urlopen", fake_urlopen):
ok = report(result, workstream_id="ws-uuid")
assert ok is True
assert captured["url"].endswith("/progress/")
assert captured["body"]["event_type"] == "e2e_result"
assert "PASSED" in captured["body"]["summary"]
assert captured["body"]["workplan_id"] == "ws-uuid"
assert "workstream_id" not in captured["body"]