from __future__ import annotations import unittest from govoplan_core.core.modules import ( CapabilityDocumentation, DocumentationTopic, MigrationSpec, ModuleManifest, PermissionDefinition, RoleTemplate, ) from govoplan_core.core.registry import PlatformRegistry from govoplan_ops.backend.api.v1.routes import _governance_inventory class GovernanceInventoryTests(unittest.TestCase): def test_inventory_projects_manifest_governance_without_provider_internals(self) -> None: registry = PlatformRegistry() registry.register(ModuleManifest( id="example", name="Example", version="1.2.3", permissions=( PermissionDefinition( scope="example:item:read", label="Read examples", description="Read example records.", category="Examples", level="tenant", module_id="example", resource="item", action="read", ), ), role_templates=( RoleTemplate( slug="example_reader", name="Example reader", description="Reads examples.", permissions=("example:item:read",), ), ), capability_factories={ "example.lookup": lambda _context: object(), "policy.example": lambda _context: object(), }, capability_documentation={ "example.lookup": CapabilityDocumentation( label="Example lookup", summary="Resolves examples.", ), }, documentation=( DocumentationTopic( id="example.reference", title="Example reference", summary="Documents the example module.", ), ), migration_spec=MigrationSpec(module_id="example"), )) payload = _governance_inventory(registry) self.assertEqual(payload["summary"]["module_count"], 1) self.assertEqual(payload["summary"]["permission_count"], 1) self.assertEqual(payload["summary"]["role_template_count"], 1) self.assertEqual(payload["summary"]["capability_count"], 2) self.assertEqual(payload["summary"]["policy_count"], 1) self.assertEqual(payload["summary"]["documented_module_count"], 1) self.assertEqual(payload["summary"]["migration_module_count"], 1) self.assertEqual(payload["modules"][0]["module_id"], "example") self.assertNotIn("capability_factories", payload["modules"][0]) self.assertFalse(any( callable(value) for value in payload["modules"][0].values() )) if __name__ == "__main__": unittest.main()