Files
govoplan-ops/tests/test_governance_inventory.py
T

84 lines
2.9 KiB
Python

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()