Files
govoplan-core/tests/test_records_contract.py
T

90 lines
2.9 KiB
Python

from __future__ import annotations
from datetime import UTC, datetime
import unittest
from govoplan_core.core.records import (
RecordContractError,
RecordFilingRequest,
RecordSourceLocator,
RecordSourceReference,
record_source_capabilities,
record_source_capability,
)
class _Registry:
def capability_names(self) -> tuple[str, ...]:
return ("mail.delivery", "records.source.cases", "records.source.files")
class RecordsContractTests(unittest.TestCase):
def test_exact_source_and_filing_request_are_tenant_bound(self) -> None:
locator = RecordSourceLocator(
tenant_id="tenant-1",
source_module="files",
resource_type="file_version",
resource_id="asset-1",
source_revision="version-7",
)
reference = RecordSourceReference(
locator=locator,
label="Evidence.pdf",
content_sha256="a" * 64,
size_bytes=12,
recorded_at=datetime(2026, 8, 6, tzinfo=UTC),
)
request = RecordFilingRequest(
tenant_id="tenant-1",
record_id="record-1",
source=locator,
purpose="process application",
filing_reason="Evidence received with the application.",
idempotency_key="filing-1",
)
self.assertEqual("version-7", reference.locator.source_revision)
self.assertEqual("record-1", request.record_id)
def test_cross_tenant_filing_and_inexact_sources_are_rejected(self) -> None:
with self.assertRaisesRegex(RecordContractError, "source_revision"):
RecordSourceLocator(
tenant_id="tenant-1",
source_module="files",
resource_type="file_version",
resource_id="asset-1",
source_revision="",
)
locator = RecordSourceLocator(
tenant_id="tenant-1",
source_module="cases",
resource_type="case_revision",
resource_id="case-1",
source_revision="4",
)
with self.assertRaisesRegex(RecordContractError, "cross tenants"):
RecordFilingRequest(
tenant_id="tenant-2",
record_id="record-1",
source=locator,
purpose="audit",
filing_reason="Preserve the decision basis.",
idempotency_key="filing-2",
)
def test_source_capabilities_are_discoverable_without_module_imports(self) -> None:
self.assertEqual("records.source.files", record_source_capability("files"))
self.assertEqual(
"records.source.forms_runtime",
record_source_capability("forms_runtime"),
)
self.assertEqual(
("records.source.cases", "records.source.files"),
record_source_capabilities(_Registry()),
)
if __name__ == "__main__":
unittest.main()