38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import ast
|
||
|
|
import unittest
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
|
||
|
|
ROOT = Path(__file__).resolve().parents[1]
|
||
|
|
ROUTER_FILE = ROOT / "app" / "api" / "router.py"
|
||
|
|
SEED_FILE = ROOT / "app" / "services" / "seed_service.py"
|
||
|
|
AUTHZ_FILE = ROOT / "app" / "services" / "legacy_authz_service.py"
|
||
|
|
|
||
|
|
|
||
|
|
def _load_module(path: Path) -> ast.Module:
|
||
|
|
return ast.parse(path.read_text(encoding="utf-8"), filename=str(path))
|
||
|
|
|
||
|
|
|
||
|
|
class FaultRecurrenceContractTest(unittest.TestCase):
|
||
|
|
def test_router_registers_fault_recurrence_api(self) -> None:
|
||
|
|
source = ROUTER_FILE.read_text(encoding="utf-8")
|
||
|
|
self.assertIn("from .v1.fault_recurrence import router as fault_recurrence_router", source)
|
||
|
|
self.assertIn("v1_router.include_router(fault_recurrence_router)", source)
|
||
|
|
|
||
|
|
def test_seed_defaults_include_fault_recurrence_menu(self) -> None:
|
||
|
|
source = SEED_FILE.read_text(encoding="utf-8")
|
||
|
|
self.assertIn('"code": "admin.fault_recurrence"', source)
|
||
|
|
self.assertIn('"path": "/admin/fault-recurrence"', source)
|
||
|
|
self.assertIn('"admin.fault_recurrence"', source)
|
||
|
|
|
||
|
|
def test_legacy_authz_maps_fault_recurrence_permissions(self) -> None:
|
||
|
|
source = AUTHZ_FILE.read_text(encoding="utf-8")
|
||
|
|
self.assertIn('"admin.fault_recurrence"', source)
|
||
|
|
self.assertIn('"/admin/fault-recurrence"', source)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
unittest.main()
|