state-hub/tests/test_repo_manager_workplan_adapter.py
tegwick 81861d816b
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 25s
feat(retirement): route SBOM scans through repo-manager
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-21 23:15:34 +02:00

115 lines
3.4 KiB
Python

"""Compatibility adapter coverage for RMGR-WP-0008-T01."""
from api.services import repo_manager_dual_run as adapter
def test_rm_update_workplan_builds_governed_cli_command(monkeypatch):
seen = {}
def fake_run(args, *, timeout=120):
seen["args"] = args
return 0, '{"status":"applied","evidence":{"git_sha":"abc"}}', ""
monkeypatch.setattr(adapter, "run_rmgr", fake_run)
result = adapter.rm_update_workplan(
repo_path="/repos/demo",
workplan_id="DEMO-WP-0001",
operation="update",
title="Renamed",
status="active",
repo_slug="demo",
correlation_id="00000000-0000-4000-8000-000000000001",
push=True,
)
assert result["status"] == "applied"
assert seen["args"][:5] == [
"workplan",
"update",
"--path",
"/repos/demo",
"--workplan-id",
]
assert "--title" in seen["args"]
assert "--status" in seen["args"]
assert "--push" in seen["args"]
def test_rm_update_workplan_maps_delete_to_confirmed_archive(monkeypatch):
seen = {}
def fake_run(args, *, timeout=120):
seen["args"] = args
return 0, '{"status":"applied"}', ""
monkeypatch.setattr(adapter, "run_rmgr", fake_run)
result = adapter.rm_update_workplan(
repo_path="/repos/demo",
workplan_id="DEMO-WP-0001",
operation="archive",
confirm_archive=True,
push=False,
)
assert result["status"] == "applied"
assert seen["args"][0:2] == ["workplan", "delete"]
assert "--confirm" in seen["args"]
assert "--push" not in seen["args"]
def test_rm_update_workplan_rejects_unknown_operation_without_invocation(monkeypatch):
def fail_run(*args, **kwargs):
raise AssertionError("rmgr must not run")
monkeypatch.setattr(adapter, "run_rmgr", fail_run)
result = adapter.rm_update_workplan(
repo_path="/repos/demo",
workplan_id="DEMO-WP-0001",
operation="erase",
)
assert result["status"] == "rejected"
assert result["error"]["code"] == "validation_error"
def test_rm_update_register_entry_builds_shared_spine_command(monkeypatch):
seen = {}
def fake_run(args, *, timeout=120):
seen["args"] = args
return 0, '{"status":"applied"}', ""
monkeypatch.setattr(adapter, "run_rmgr", fake_run)
result = adapter.rm_update_register_entry(
repo_path="/repos/demo",
kind="technical-debt",
entry_id="TD-001",
operation="put",
title="Debt",
data={"severity": "high"},
push=False,
)
assert result["status"] == "applied"
assert seen["args"][0:2] == ["register", "put"]
assert "technical-debt" in seen["args"]
assert '{"severity":"high"}' in seen["args"]
def test_rm_scan_sbom_builds_derived_snapshot_command(monkeypatch):
seen = {}
def fake_run(args, *, timeout=120):
seen["args"] = args
return (
0,
'{"schema":"repo-manager.sbom-snapshot.v1","ok":true,"entry_count":3}',
"",
)
monkeypatch.setattr(adapter, "run_rmgr", fake_run)
result = adapter.rm_scan_sbom(repo_path="/repos/demo", repo_slug="demo")
assert result["ok"] is True
assert result["schema"] == "repo-manager.sbom-snapshot.v1"
assert result["exit_code"] == 0
assert seen["args"] == ["sbom", "scan", "--path", "/repos/demo", "--slug", "demo"]