generated from coulomb/repo-seed
65 lines
2.6 KiB
Python
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"])
|