37 lines
1.2 KiB
Python
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()
|