feat: add governance operations dashboard
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user