Files
railiance-fabric/tests/test_accountability_roots.py

65 lines
2.6 KiB
Python

from pathlib import Path
from railiance_fabric.financial_baseline import load_financial_baseline
from railiance_fabric.loader import load_yaml
from railiance_fabric.schema_validation import draft202012_validator
MANIFEST_PATH = Path("fabric/discovery/railiance-accountability-roots.yaml")
EXAMPLE_PATH = Path("examples/discovery/accountability-root-manifest.yaml")
SCHEMA_PATH = Path("schemas/accountability-root-manifest.schema.yaml")
def test_accountability_root_manifests_match_schema() -> None:
validator = draft202012_validator(SCHEMA_PATH)
for path in (MANIFEST_PATH, EXAMPLE_PATH):
manifest = load_yaml(path)
assert list(validator.iter_errors(manifest)) == []
def test_railiance_manifest_matches_financial_baseline() -> None:
manifest = load_yaml(MANIFEST_PATH)
baseline = load_financial_baseline()
assert manifest["netkingdom"]["id"] == baseline["netkingdom"]["id"]
assert manifest["netkingdom"]["king_actor_id"] == baseline["netkingdom"]["king_actor_id"]
baseline_actor_ids = {actor["id"] for actor in baseline["actors"]}
manifest_actor_ids = {actor["id"] for actor in manifest["actors"]}
assert baseline_actor_ids <= manifest_actor_ids
primary_fabric = next(fabric for fabric in manifest["fabrics"] if fabric["id"] == "fabric.railiance.primary")
assert primary_fabric["kind"] == "Fabric"
assert primary_fabric["status"] == "active"
assert primary_fabric["boundary"]["criterion"] == "financial_and_operational_accountability"
def test_railiance_manifest_covers_required_root_kinds() -> None:
manifest = load_yaml(MANIFEST_PATH)
root_types = {root["type"] for root in manifest["discovery_roots"]}
assert {
"state_hub_repo_inventory",
"gitea_organization",
"registry_manifest",
"host_path",
"repository_checkout",
"deployment_automation",
"backup_recovery",
"secret_root",
} <= root_types
assert all(root["fabric_id"] == "fabric.railiance.primary" for root in manifest["discovery_roots"])
assert all(root["source"]["safe_discovery"] for root in manifest["discovery_roots"])
def test_example_manifest_can_add_tenant_subfabric() -> None:
manifest = load_yaml(EXAMPLE_PATH)
subfabrics = [fabric for fabric in manifest["fabrics"] if fabric["kind"] == "Subfabric"]
assert len(subfabrics) == 1
assert subfabrics[0]["parent_fabric_id"] == "fabric.example.primary"
assert subfabrics[0]["tenant_actor_id"] == "actor.example.tenant"
assert any(root.get("subfabric_id") == "subfabric.example.tenant" for root in manifest["discovery_roots"])