feat: harden shared platform contracts

This commit is contained in:
2026-07-30 14:26:36 +02:00
parent 6970bf7457
commit 9b88ae388b
24 changed files with 2034 additions and 57 deletions

View File

@@ -3,7 +3,10 @@ from __future__ import annotations
import unittest
from govoplan_core.core.modules import (
DocumentationConfigurationDecision,
DocumentationConfigurationProviderRegistration,
DocumentationCondition,
DocumentationSourceDefinition,
DocumentationTopic,
ModuleManifest,
user_workflow_scope_condition_issues,
@@ -67,6 +70,52 @@ class DocumentationTopicContractTests(unittest.TestCase):
self.assertEqual(user_workflow_scope_condition_issues(user_reference), ())
registry_for(scoped, admin_workflow, user_reference).validate()
def test_documentation_configuration_and_source_extensions_are_validated(self) -> None:
resolver = lambda _context, keys: { # noqa: E731
key: DocumentationConfigurationDecision(key=key, state="enabled")
for key in keys
}
registry = PlatformRegistry()
registry.register(ModuleManifest(
id="example",
name="Example",
version="1.0.0",
documentation_configuration_providers=(
DocumentationConfigurationProviderRegistration(
keys=("example.feature",),
resolve=resolver,
),
),
documentation_sources=(
DocumentationSourceDefinition(
id="example.handbook",
kind="repository",
label="Example handbook",
),
),
))
registry.validate()
duplicate = PlatformRegistry()
duplicate.register(ModuleManifest(
id="example",
name="Example",
version="1.0.0",
documentation_configuration_providers=(
DocumentationConfigurationProviderRegistration(
keys=("example.feature",),
resolve=resolver,
),
DocumentationConfigurationProviderRegistration(
keys=("example.feature",),
resolve=resolver,
),
),
))
with self.assertRaisesRegex(RegistryError, "duplicate documentation configuration key"):
duplicate.validate()
def registry_for(*topics: DocumentationTopic) -> PlatformRegistry:
registry = PlatformRegistry()