Preserve tenant module entitlement state

This commit is contained in:
2026-08-04 08:21:50 +02:00
parent d4bfc6e45a
commit e3c18f9aa8
4 changed files with 36 additions and 2 deletions
+21
View File
@@ -12,6 +12,7 @@ from govoplan_tenancy.backend.api.v1.routes import (
_require_tenant_update_permissions,
)
from govoplan_tenancy.backend.api.v1.schemas import TenantUpdateRequest
from govoplan_core.core.module_entitlements import MODULE_ENTITLEMENTS_KEY
from govoplan_tenancy.backend.lifecycle import (
TENANT_EVENT_CREATED,
TENANT_EVENT_DELETION_REQUESTED,
@@ -121,6 +122,26 @@ class TenantUpdateHelperTests(unittest.TestCase):
self.assertEqual("en", tenant.default_locale)
self.assertEqual({"theme": "contrast"}, tenant.settings)
def test_tenant_content_update_preserves_reserved_module_entitlements(self) -> None:
entitlement = {"schema_version": 1, "revision": 4}
tenant = SimpleNamespace(
name="Old",
description=None,
default_locale="en",
settings={MODULE_ENTITLEMENTS_KEY: entitlement, "theme": "old"},
)
payload = TenantUpdateRequest(
settings={
"theme": "contrast",
MODULE_ENTITLEMENTS_KEY: {"revision": 999},
}
)
_apply_tenant_content_updates(tenant, payload) # type: ignore[arg-type]
self.assertEqual("contrast", tenant.settings["theme"])
self.assertEqual(entitlement, tenant.settings[MODULE_ENTITLEMENTS_KEY])
def test_tenant_status_update_prevents_suspending_current_tenant(self) -> None:
tenant = SimpleNamespace(id="tenant-1", is_active=True)
principal = FakePrincipal({"system:tenants:suspend"}, tenant_id="tenant-1")