Files
awoooi/apps/api/tests/test_delivery_closure_workbench_api.py

168 lines
7.8 KiB
Python

from __future__ import annotations
from fastapi import FastAPI
from fastapi.testclient import TestClient
from src.api.v1.agents import router
def test_delivery_closure_workbench_endpoint_returns_product_summary():
app = FastAPI()
app.include_router(router, prefix="/api/v1")
client = TestClient(app)
response = client.get("/api/v1/agents/delivery-closure-workbench")
assert response.status_code == 200
data = response.json()
assert data["schema_version"] == "delivery_closure_workbench_v1"
assert data["summary"]["source_count"] == 6
assert data["summary"]["loaded_source_count"] == 6
assert data["summary"]["runtime_execution_authorized"] is False
assert data["summary"]["remote_write_authorized"] is True
assert data["summary"]["repo_creation_authorized"] is True
assert data["summary"]["visibility_change_authorized"] is True
assert data["summary"]["refs_sync_authorized"] is True
assert data["summary"]["workflow_trigger_authorized"] is True
assert data["summary"]["production_deploy_status"] == (
"blocked_waiting_authorized_gitea_workflow_dispatch_and_runner_queue"
)
assert data["summary"]["production_deploy_source_control_main_ready"] is True
assert data["summary"]["production_deploy_image_tag_matches_main"] is False
assert data["summary"]["production_deploy_governance_fields_present"] is False
assert (
data["summary"]["production_deploy_authorized_dispatch_channel_ready"]
is False
)
assert data["summary"]["production_deploy_hard_blocker_count"] == 2
assert data["summary"]["production_deploy_latest_visible_cd_run_id"] == "3853"
assert data["summary"]["github_write_channel_ready"] is False
assert data["summary"]["github_account_status"] == "suspended"
assert data["summary"]["github_account_suspended"] is True
assert data["summary"]["github_api_forbidden_count"] == 6
assert data["summary"]["github_controlled_apply_ready_count"] == 0
assert data["summary"]["github_blocked_preflight_target_count"] == 5
assert data["summary"]["github_operator_unblock_required"] is True
assert data["summary"]["github_operator_unblock_status"] == (
"github_account_suspended_external_action_required"
)
assert data["summary"]["github_internal_governance_writeback_ready"] is True
assert data["summary"]["github_mcp_evidence_packet_count"] == 1
assert data["summary"]["github_rag_evidence_ref_count"] == 5
assert data["summary"]["github_km_writeback_ready_count"] == 1
assert data["summary"]["github_playbook_writeback_ready_count"] == 1
assert data["summary"]["github_timeline_log_ready_count"] == 1
assert data["summary"]["github_logbook_entry_count"] == 1
assert data["summary"]["secret_values_collected"] is False
assert data["summary"]["average_completion_percent"] >= 0
assert data["summary"]["high_risk_blocker_count"] > 0
lanes = {lane["id"]: lane for lane in data["lanes"]}
sources = {source["id"]: source for source in data["source_statuses"]}
assert sorted(lanes) == [
"backup",
"gitea",
"github",
"production_deploy",
"release",
"runtime",
]
assert lanes["release"]["metric"]["kind"] == "blocked_gate"
assert lanes["release"]["status"] == "controlled_status_cleanup_package_ready"
assert lanes["release"]["blocker_count"] == 0
assert lanes["release"]["metric"]["blocked"] == 0
assert lanes["release"]["metric"]["total"] == 5
assert lanes["production_deploy"]["metric"]["kind"] == "deploy_readback"
assert lanes["production_deploy"]["status"] == (
"blocked_waiting_authorized_gitea_workflow_dispatch_and_runner_queue"
)
assert lanes["production_deploy"]["blocker_count"] == 2
assert lanes["production_deploy"]["metric"][
"observed_source_control_main_short_sha"
] == "3900b0b7a779"
assert lanes["production_deploy"]["metric"][
"production_image_tag_short_sha"
] == "af45811e87"
assert (
lanes["production_deploy"]["metric"]["production_image_tag_matches_main"]
is False
)
assert lanes["production_deploy"]["metric"]["current_main_cd_run_visible"] is False
assert (
lanes["production_deploy"]["metric"]["authorized_dispatch_channel_ready"]
is False
)
assert lanes["production_deploy"]["metric"]["latest_visible_cd_run_id"] == "3853"
assert lanes["github"]["metric"]["kind"] == "private_backup_verified"
assert lanes["gitea"]["metric"]["kind"] == "workflow_count"
assert lanes["runtime"]["metric"]["kind"] == "surface_count"
assert lanes["backup"]["metric"]["kind"] == "readiness_row_count"
assert sources["github_private_backup"]["loaded"] is True
assert sources["production_deploy_readback"]["loaded"] is True
assert (
sources["production_deploy_readback"]["schema_version"]
== "awoooi_production_deploy_readback_blocker_v1"
)
assert sources["production_deploy_readback"]["missing_reason"] == ""
assert (
sources["github_private_backup"]["schema_version"]
== "github_target_private_backup_evidence_gate_v1"
)
assert sources["github_private_backup"]["missing_reason"] == ""
assert lanes["github"]["blocker_count"] == 5
assert (
lanes["github"]["status"]
== "blocked_github_account_suspended_and_write_channel_required"
)
assert lanes["github"]["metric"]["verified"] == 4
assert lanes["github"]["metric"]["total"] == 9
assert lanes["github"]["metric"]["controlled_apply_ready"] == 0
assert lanes["github"]["metric"]["blocked_preflight"] == 5
assert lanes["github"]["metric"]["write_channel_ready"] is False
assert lanes["github"]["metric"]["github_account_status"] == "suspended"
assert lanes["github"]["metric"]["github_account_suspended"] is True
assert lanes["github"]["metric"]["internal_governance_ready"] is True
assert lanes["github"]["metric"]["km_writeback_ready"] == 1
assert lanes["github"]["metric"]["playbook_writeback_ready"] == 1
assert lanes["github"]["operator_unblock"]["required"] is True
assert lanes["github"]["operator_unblock"]["status"] == (
"github_account_suspended_external_action_required"
)
assert (
"complete_github_account_suspension_appeal_or_provide_authorized_writable_namespace"
in lanes["github"]["operator_unblock"]["required_actions"]
)
assert lanes["github"]["internal_governance_writeback"]["ready"] is True
assert (
lanes["github"]["internal_governance_writeback"][
"mcp_evidence_packet_count"
]
== 1
)
assert (
lanes["github"]["internal_governance_writeback"]["github_write_performed"]
is False
)
assert lanes["github"]["next_action"] == (
"complete_github_account_suspension_appeal_or_provide_authorized_writable_namespace"
)
assert all(0 <= lane["completion_percent"] <= 100 for lane in lanes.values())
assert all(lane["tone"] in {"ok", "warn", "danger"} for lane in lanes.values())
boundaries = data["operation_boundaries"]
assert boundaries["read_only_api_allowed"] is True
assert boundaries["runtime_write_allowed"] is False
assert boundaries["remote_write_allowed"] is True
assert boundaries["repo_creation_allowed"] is True
assert boundaries["visibility_change_allowed"] is True
assert boundaries["refs_sync_allowed"] is True
assert boundaries["workflow_trigger_allowed"] is True
assert boundaries["production_deploy_trigger_allowed"] is False
assert boundaries["github_write_channel_ready"] is False
assert boundaries["github_controlled_apply_allowed"] is False
assert boundaries["secret_value_collection_allowed"] is False
assert boundaries["backup_restore_execution_allowed"] is False
assert boundaries["active_scan_allowed"] is False
assert "192.168.0." not in response.text