Files
govoplan-core/tests/test_principal_helpers.py
zemion 6591aaa3fd
Module Package Release / publish-packages (push) Successful in 13s
fix(core): preserve data integrity and bound shared UI and response work
Release v0.1.46. Coordinated integrity review: GovOPlaN/govoplan-core#298.
2026-09-08 12:30:38 +02:00

44 lines
2.4 KiB
Python
Executable File

from types import SimpleNamespace
import unittest
from govoplan_core.core.principal_helpers import principal_actor_ids, principal_user_first_actor
class PrincipalHelperTests(unittest.TestCase):
def test_contracts_keep_their_distinct_precedence_and_whitespace(self) -> None:
principal = SimpleNamespace(account_id=" account ", identity_id=" identity ", membership_id=" membership ", user=SimpleNamespace(id=" user "))
self.assertEqual((" account ", " identity ", " membership ", " user "), principal_actor_ids(principal))
self.assertEqual("user", principal_user_first_actor(principal))
self.assertEqual(" account ", principal.account_id)
self.assertEqual(" user ", principal.user.id)
def test_duplicate_ids_are_removed_in_stable_order_without_normalizing(self) -> None:
principal = SimpleNamespace(account_id="same", identity_id=" same ", membership_id="same", user=SimpleNamespace(id="same"))
self.assertEqual(("same", " same "), principal_actor_ids(principal))
self.assertEqual("same", principal_user_first_actor(principal))
def test_missing_blank_and_service_only_principals_remain_unattributed(self) -> None:
for principal in (
object(), None, SimpleNamespace(), SimpleNamespace(service_account_id="service"),
SimpleNamespace(account_id=0, identity_id=False, membership_id="\t", user=SimpleNamespace(id="\u00a0")),
):
with self.subTest(principal=principal):
self.assertEqual((), principal_actor_ids(principal))
self.assertIsNone(principal_user_first_actor(principal))
def test_fallback_and_existing_string_coercion_are_unchanged(self) -> None:
for values, expected_ids, expected_actor in (
({"account_id": 17, "identity_id": "identity"}, ("17", "identity"), "17"),
({"identity_id": " identity ", "membership_id": "member"}, (" identity ", "member"), "identity"),
({"membership_id": " member "}, (" member ",), "member"),
({"user": SimpleNamespace(id=" user ")}, (" user ",), "user"),
):
with self.subTest(values=values):
principal = SimpleNamespace(**values)
self.assertEqual(expected_ids, principal_actor_ids(principal))
self.assertEqual(expected_actor, principal_user_first_actor(principal))
if __name__ == "__main__":
unittest.main()