Files
govoplan-core/tests/test_external_reference_contract.py

37 lines
1.2 KiB
Python

from __future__ import annotations
import unittest
from govoplan_core.core.external_references import (
ExternalObjectReference,
ExternalReferenceValidationError,
)
class ExternalReferenceContractTests(unittest.TestCase):
def test_reference_has_stable_identity_and_ordered_maturity(self) -> None:
reference = ExternalObjectReference(
system="openproject-main",
object_type="work_package",
object_id="42",
maturity="synchronize",
canonical_url="https://projects.example.test/work_packages/42",
)
self.assertEqual("openproject-main:work_package:42", reference.identity_key)
self.assertTrue(reference.supports("read"))
self.assertFalse(reference.supports("replace"))
def test_reference_rejects_credentials_in_urls(self) -> None:
with self.assertRaises(ExternalReferenceValidationError):
ExternalObjectReference(
system="wiki",
object_type="page",
object_id="Main_Page",
canonical_url="https://user:secret@example.test/wiki/Main_Page",
)
if __name__ == "__main__":
unittest.main()