Module Package Release / publish-packages (push) Successful in 13s
Release v0.1.46. Coordinated integrity review: GovOPlaN/govoplan-core#298.
44 lines
2.4 KiB
Python
Executable File
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()
|