feat(delivery): expose p0 cicd baseline readiness
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m47s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m47s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
This commit is contained in:
@@ -19,14 +19,29 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
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"]["source_count"] == 7
|
||||
assert data["summary"]["loaded_source_count"] == 7
|
||||
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"]["p0_cicd_baseline_status"] == (
|
||||
"blocked_required_sources_missing"
|
||||
)
|
||||
assert data["summary"]["p0_cicd_baseline_workplan_id"] == "P0-004"
|
||||
assert data["summary"]["p0_cicd_baseline_source_readiness_percent"] == 27
|
||||
assert data["summary"]["p0_cicd_baseline_required_source_count"] == 11
|
||||
assert data["summary"]["p0_cicd_baseline_present_required_source_count"] == 3
|
||||
assert data["summary"]["p0_cicd_baseline_missing_required_source_count"] == 8
|
||||
assert (
|
||||
"warning_step_template_copy_apply_gate_service"
|
||||
in data["summary"]["p0_cicd_baseline_blocked_source_ids"]
|
||||
)
|
||||
assert data["summary"]["p0_cicd_baseline_safe_next_step"] == (
|
||||
"restore_or_recreate_tracked_warning_step_source_before_workflow_enablement"
|
||||
)
|
||||
assert data["summary"]["production_deploy_status"] == (
|
||||
"closure_verified"
|
||||
)
|
||||
@@ -274,6 +289,7 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
sources = {source["id"]: source for source in data["source_statuses"]}
|
||||
assert sorted(lanes) == [
|
||||
"backup",
|
||||
"cicd_baseline",
|
||||
"gitea",
|
||||
"github",
|
||||
"production_deploy",
|
||||
@@ -498,6 +514,23 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
== 0
|
||||
)
|
||||
assert lanes["github"]["metric"]["kind"] == "private_backup_verified"
|
||||
assert lanes["cicd_baseline"]["metric"]["kind"] == "source_readiness"
|
||||
assert lanes["cicd_baseline"]["status"] == "blocked_required_sources_missing"
|
||||
assert lanes["cicd_baseline"]["blocker_count"] == 8
|
||||
assert lanes["cicd_baseline"]["completion_percent"] == 27
|
||||
assert lanes["cicd_baseline"]["metric"]["workplan_id"] == "P0-004"
|
||||
assert lanes["cicd_baseline"]["metric"]["required_source_count"] == 11
|
||||
assert lanes["cicd_baseline"]["metric"]["present_required_source_count"] == 3
|
||||
assert lanes["cicd_baseline"]["metric"]["missing_required_source_count"] == 8
|
||||
assert (
|
||||
"warning_step_template_copy_apply_gate_service"
|
||||
in lanes["cicd_baseline"]["metric"]["blocked_source_ids"]
|
||||
)
|
||||
assert (
|
||||
lanes["cicd_baseline"]["metric"]["workflow_modification_allowed"]
|
||||
is False
|
||||
)
|
||||
assert lanes["cicd_baseline"]["metric"]["workflow_trigger_allowed"] is False
|
||||
assert lanes["gitea"]["metric"]["kind"] == "workflow_count"
|
||||
assert lanes["runtime"]["metric"]["kind"] == "surface_count"
|
||||
assert lanes["backup"]["metric"]["kind"] == "readiness_row_count"
|
||||
@@ -533,6 +566,7 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
assert lanes["backup"]["metric"]["credential_marker_write_authorized_count"] == 0
|
||||
assert lanes["backup"]["metric"]["credential_escrow_forbidden_true_field_count"] == 0
|
||||
assert sources["github_private_backup"]["loaded"] is True
|
||||
assert sources["p0_cicd_baseline_source_readiness"]["loaded"] is True
|
||||
assert sources["production_deploy_readback"]["loaded"] is True
|
||||
assert (
|
||||
sources["production_deploy_readback"]["schema_version"]
|
||||
@@ -543,6 +577,14 @@ def test_delivery_closure_workbench_endpoint_returns_product_summary():
|
||||
sources["github_private_backup"]["schema_version"]
|
||||
== "github_target_private_backup_evidence_gate_v1"
|
||||
)
|
||||
assert (
|
||||
sources["p0_cicd_baseline_source_readiness"]["schema_version"]
|
||||
== "p0_cicd_baseline_source_readiness_v1"
|
||||
)
|
||||
assert (
|
||||
sources["p0_cicd_baseline_source_readiness"]["missing_reason"]
|
||||
== ""
|
||||
)
|
||||
assert sources["github_private_backup"]["missing_reason"] == ""
|
||||
assert lanes["github"]["blocker_count"] == 5
|
||||
assert (
|
||||
|
||||
47
apps/api/tests/test_p0_cicd_baseline_source_readiness_api.py
Normal file
47
apps/api/tests/test_p0_cicd_baseline_source_readiness_api.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from src.api.v1.agents import router
|
||||
from src.services.p0_cicd_baseline_source_readiness import (
|
||||
load_latest_p0_cicd_baseline_source_readiness,
|
||||
)
|
||||
|
||||
|
||||
def test_p0_cicd_baseline_source_readiness_loader_reports_missing_sources():
|
||||
payload = load_latest_p0_cicd_baseline_source_readiness()
|
||||
|
||||
assert payload["schema_version"] == "p0_cicd_baseline_source_readiness_v1"
|
||||
assert payload["status"] == "blocked_required_sources_missing"
|
||||
assert payload["priority"] == "P0-004"
|
||||
assert payload["readback"]["workplan_id"] == "P0-004"
|
||||
assert payload["readback"]["scorecard_completion_percent"] == 40
|
||||
assert payload["rollups"]["required_source_count"] == 11
|
||||
assert payload["rollups"]["present_required_source_count"] == 3
|
||||
assert payload["rollups"]["missing_required_source_count"] == 8
|
||||
assert payload["rollups"]["source_readiness_percent"] == 27
|
||||
assert (
|
||||
"warning_step_template_copy_apply_gate_service"
|
||||
in payload["rollups"]["blocked_source_ids"]
|
||||
)
|
||||
assert payload["operation_boundaries"]["read_only_api_allowed"] is True
|
||||
assert payload["operation_boundaries"]["workflow_modification_allowed"] is False
|
||||
assert payload["operation_boundaries"]["workflow_trigger_allowed"] is False
|
||||
assert payload["operation_boundaries"]["github_api_allowed"] is False
|
||||
assert payload["operation_boundaries"]["secret_read_allowed"] is False
|
||||
|
||||
|
||||
def test_p0_cicd_baseline_source_readiness_endpoint_returns_snapshot():
|
||||
app = FastAPI()
|
||||
app.include_router(router, prefix="/api/v1")
|
||||
client = TestClient(app)
|
||||
|
||||
response = client.get("/api/v1/agents/p0-cicd-baseline-source-readiness")
|
||||
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["schema_version"] == "p0_cicd_baseline_source_readiness_v1"
|
||||
assert data["status"] == "blocked_required_sources_missing"
|
||||
assert data["rollups"]["missing_required_source_count"] == 8
|
||||
assert data["operation_boundaries"]["workflow_modification_allowed"] is False
|
||||
Reference in New Issue
Block a user