47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
APP = ROOT / "active-runtime" / "app"
|
|
if str(APP) not in sys.path:
|
|
sys.path.insert(0, str(APP))
|
|
|
|
from aios_task_admission_bridge_contract import ( # noqa: E402
|
|
TASK_ADMISSION_OPERATION_REQUIRED_FIELDS,
|
|
TASK_ADMISSION_ROUTES,
|
|
)
|
|
|
|
|
|
def test_bootstrap_route_operation_mapping_is_exact():
|
|
assert TASK_ADMISSION_ROUTES == {
|
|
"/v2/task-admission/envelope": "getTaskAdmissionEnvelope",
|
|
"/v2/task-admission/authorize": "submitTaskAdmissionAuthorization",
|
|
"/v2/task-admission/status": "getTaskAdmissionStatus",
|
|
}
|
|
|
|
|
|
def test_bootstrap_operations_do_not_replace_writer_or_principal_gates():
|
|
operations = set(TASK_ADMISSION_OPERATION_REQUIRED_FIELDS)
|
|
assert "acquireWriterLease" not in operations
|
|
assert "commitFilesGoverned" not in operations
|
|
assert "issueTaskPrincipal" not in operations
|
|
assert operations == {
|
|
"getTaskAdmissionEnvelope",
|
|
"submitTaskAdmissionAuthorization",
|
|
"getTaskAdmissionStatus",
|
|
}
|
|
|
|
|
|
def test_openapi_fragment_matches_runtime_contract():
|
|
text = (
|
|
ROOT / "docs" / "gitops" / "openapi-task-admission-bootstrap-fragment.yaml"
|
|
).read_text(encoding="utf-8")
|
|
for route, operation in TASK_ADMISSION_ROUTES.items():
|
|
assert f" {route}:" in text
|
|
assert f"operationId: {operation}" in text
|
|
assert "global write" not in text.lower()
|
|
assert "runShell" not in text
|
|
assert "force push" not in text.lower()
|