Files
CASAN/packages/casan-harness/tests/readiness-tests.py
T

162 lines
6.1 KiB
Python

#!/usr/bin/env python3
"""Acceptance tests for CASAN's three-dimensional readiness contract."""
from __future__ import annotations
import importlib.util
import json
from pathlib import Path
import tempfile
import unittest
MODULE = Path(__file__).resolve().parents[1] / "scripts" / "python" / "readiness.py"
SPEC = importlib.util.spec_from_file_location("casan_readiness", MODULE)
READINESS = importlib.util.module_from_spec(SPEC)
assert SPEC.loader
SPEC.loader.exec_module(READINESS)
class ReadinessTests(unittest.TestCase):
def setUp(self):
self.temporary = tempfile.TemporaryDirectory()
self.root = Path(self.temporary.name)
self.runtime = self.root / "runtime"
report = (
self.runtime / "packages" / "casan-harness" / "scripts" /
"python" / "local_report.py"
)
report.parent.mkdir(parents=True)
report.write_text("# report engine\n", encoding="utf-8")
(self.root / ".casan").mkdir()
(self.root / ".casan" / "casan-hook.py").write_text(
"# bootstrap\n", encoding="utf-8")
(self.root / ".casan" / "config.json").write_text(json.dumps({
"schema_version": "21.3",
"project_id": "commercial-core",
"edition": "core",
"enforcement_mode": "enforce",
"runtime_path": str(self.runtime),
"clients": ["codex"],
}), encoding="utf-8")
(self.root / ".casan" / "version.lock").write_text(json.dumps({
"harness_version": "1.0.5",
"harness_hash": "abc123",
}), encoding="utf-8")
(self.root / ".codex").mkdir()
(self.root / ".codex" / "hooks.json").write_text(
'{"hooks":{"SessionStart":[{"hooks":[{"command":"python3 .casan/casan-hook.py --client codex"}]}]}}',
encoding="utf-8",
)
(self.root / ".specify" / "logs").mkdir(parents=True)
(self.root / ".specify" / "state").mkdir(parents=True)
(self.root / "package.json").write_text(
'{"name":"commercial-core"}', encoding="utf-8")
def tearDown(self):
self.temporary.cleanup()
def test_core_is_ready_without_a_domain_pack_or_provider_telemetry(self):
result = READINESS.assess(self.root, client_state={
"codex": {
"verified": True,
"operational": True,
"status": "trusted",
},
})
dimensions = result["dimensions"]
self.assertEqual(result["overall_status"], "ready")
self.assertEqual(dimensions["core"]["status"], "ready")
self.assertEqual(
dimensions["domain_pipeline"]["status"], "not_configured")
self.assertEqual(
dimensions["provider_telemetry"]["status"],
"optional_unavailable",
)
self.assertEqual(
dimensions["core"]["acceptance"][5]["status"],
"optional_unavailable",
)
def test_unverified_codex_trust_is_an_action_not_a_fake_ready_state(self):
result = READINESS.assess(self.root, client_state={
"codex": {
"verified": True,
"operational": False,
"status": "modified",
},
})
self.assertEqual(result["overall_status"], "action_required")
self.assertEqual(
result["dimensions"]["core"]["acceptance"][1]["status"],
"action_required",
)
self.assertTrue(any(
action["code"] == "verify_codex_trust"
for action in result["next_actions"]
))
def test_one_healthy_route_keeps_core_operational_with_attention(self):
config_path = self.root / ".casan" / "config.json"
config = json.loads(config_path.read_text(encoding="utf-8"))
config["clients"] = ["codex", "vscode-copilot"]
config_path.write_text(json.dumps(config), encoding="utf-8")
result = READINESS.assess(self.root, client_state={
"codex": {
"verified": True,
"operational": True,
"status": "trusted",
},
"vscode-copilot": {"operational": False},
})
self.assertEqual(result["overall_status"], "ready_with_attention")
self.assertEqual(
result["dimensions"]["core"]["acceptance"][1]["status"],
"warning",
)
self.assertTrue(any(
action["code"] == "activate_vscode_copilot"
for action in result["next_actions"]
))
def test_discovery_is_casan_owned_and_never_creates_domain_inputs(self):
result = READINESS.assess(self.root, persist=True, client_state={
"codex": {
"verified": True,
"operational": True,
"status": "trusted",
},
})
self.assertEqual(result["dimensions"]["domain_pipeline"]["domain_packs"], [])
self.assertTrue((self.root / ".casan" / "discovery.json").is_file())
self.assertTrue((self.root / ".casan" / "readiness.json").is_file())
self.assertFalse((self.root / "apps").exists())
def test_domain_configuration_references_existing_project_source_only(self):
manifest = self.root / "docs" / "project.manifest.json"
manifest.parent.mkdir()
manifest.write_text(json.dumps({
"schema_version": 1,
"project_id": "commercial-core",
}), encoding="utf-8")
configured = READINESS.configure_domain(
self.root, "docs/project.manifest.json")
self.assertEqual(configured["manifest"], "docs/project.manifest.json")
result = READINESS.assess(self.root, client_state={
"codex": {
"verified": True,
"operational": True,
"status": "trusted",
},
})
self.assertEqual(
result["dimensions"]["domain_pipeline"]["status"], "configured")
self.assertEqual(
result["dimensions"]["domain_pipeline"]["selected_manifest"],
"docs/project.manifest.json",
)
if __name__ == "__main__":
unittest.main()