net-kingdom/identity-provisioner/tests/test_provisioner.py
tegwick ba07dd2acb
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Add scoped LLDAP identity provisioner
2026-07-28 00:57:16 +02:00

32 lines
1.2 KiB
Python

import pathlib
import sys
import unittest
sys.path.insert(0, str(pathlib.Path(__file__).parents[1]))
from provisioner import _username, dispatch, Result
class Fake:
def provision(self, payload): return Result("p", "u", "password_setup_required", False)
def suspend(self, subject): return Result("p", subject, "suspended", False)
def reactivate(self, subject): return Result("p", subject, "active", False)
def deprovision(self, subject): return Result("p", subject, "deprovisioned", False)
class ProvisionerTests(unittest.TestCase):
def test_username_is_stable_and_sanitized(self):
self.assertEqual("bernd.worsch", _username("Bernd.Worsch@binky-hedgehog.com"))
def test_dispatch_requires_idempotency(self):
with self.assertRaisesRegex(ValueError, "idempotency_key"):
dispatch(Fake(), "/v1/identities/suspend", {
"external_subject": "u", "correlation_id": "c"
})
def test_lifecycle_dispatch(self):
result = dispatch(Fake(), "/v1/identities/suspend", {
"external_subject": "u",
"idempotency_key": "1234567890123456",
"correlation_id": "c",
})
self.assertEqual("suspended", result.status)