hub-core/tests/test_workload_projection_contract.py
tegwick ab936a1e98
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / pytest-smoke (push) Failing after 2s
feat: transport authoritative workload projections
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a0230c-b06c-7641-808a-e191b6d1da49
2026-08-23 10:54:40 +02:00

95 lines
3.4 KiB
Python

import json
from typing import Any
from jsonschema import Draft202012Validator, FormatChecker
from hub_core.contracts import (
WORKLOAD_PROJECTION_CONTRACT_ID,
WORKLOAD_PROJECTION_CONTRACT_VERSION,
workload_projection_contract_root,
)
ROOT = workload_projection_contract_root()
SCHEMAS = ROOT.joinpath("schemas")
FIXTURE = ROOT.joinpath("fixtures", "repo-manager-nine-workloads.json")
OPENAPI = ROOT.joinpath("openapi", "workload-projection.openapi.json")
COMPATIBILITY = ROOT.joinpath("compatibility-matrix.json")
def load(resource: Any) -> Any:
return json.loads(resource.read_text(encoding="utf-8"))
def validate(instance: Any, name: str) -> None:
schema = load(SCHEMAS.joinpath(name))
Draft202012Validator.check_schema(schema)
Draft202012Validator(schema, format_checker=FormatChecker()).validate(instance)
def test_packaged_workload_contract_identity_and_artifacts() -> None:
assert WORKLOAD_PROJECTION_CONTRACT_ID == "helixforge.workload-projection"
assert WORKLOAD_PROJECTION_CONTRACT_VERSION == "1.0.0"
for artifact in (ROOT.joinpath("README.md"), FIXTURE, OPENAPI, COMPATIBILITY):
assert artifact.is_file()
for name in (
"workload-projection-page.schema.json",
"workload-projection.schema.json",
"workload-resolution.schema.json",
):
Draft202012Validator.check_schema(load(SCHEMAS.joinpath(name)))
def test_nine_declaration_fixture_is_valid_exact_and_canonical_utc() -> None:
fixture = load(FIXTURE)
validate(fixture, "workload-projection-page.schema.json")
workloads = fixture["workloads"]
identities = [(record["rapp_id"], record["name"]) for record in workloads]
assert len(workloads) == fixture["snapshot"]["total_workload_count"] == 9
assert identities == sorted(identities)
assert len(identities) == len(set(identities))
assert all(record["declaration_repo"] == record["rapp_id"] for record in workloads)
assert all(
record["declaration_path"]
== f"{record['declaration_repo']}/declarations/rapp.yaml"
for record in workloads
)
assert fixture["snapshot"]["generated_at"].endswith("Z")
assert all(record["observed_at"].endswith("Z") for record in workloads)
def test_compatibility_matrix_preserves_repo_manager_authority_and_forbids_inference() -> None:
matrix = load(COMPATIBILITY)
assert matrix["contract_id"] == WORKLOAD_PROJECTION_CONTRACT_ID
assert matrix["accepted_inputs"] == [
{
"contract_id": "helixforge.workload-projection-source",
"version": "1.0.0",
"source_contract": "helixforge.workload-reference/v1",
"status": "current",
"coercion": False,
}
]
assert matrix["authority"]["index_and_resolution"] == "repo-manager"
assert set(matrix["forbidden_fallbacks"]) == {
"repository_name",
"owner_repo",
"path_segment",
"alias",
}
def test_workload_openapi_is_projection_query_read_only() -> None:
document = load(OPENAPI)
operations = [
(method, operation)
for path_item in document["paths"].values()
for method, operation in path_item.items()
if method in {"get", "post", "put", "patch", "delete"}
]
assert document["openapi"] == "3.1.0"
assert operations and all(method == "get" for method, _ in operations)
assert all(operation["x-port-id"] == "port.projection.query" for _, operation in operations)