Gate calendar sync workers by tenant entitlement

This commit is contained in:
2026-08-04 09:29:35 +02:00
parent b4e5351b8c
commit 00add294a8
3 changed files with 115 additions and 16 deletions
+55
View File
@@ -0,0 +1,55 @@
from __future__ import annotations
import unittest
from contextlib import contextmanager
from types import SimpleNamespace
from unittest.mock import patch
from govoplan_calendar.backend.tasks import sync_due_caldav_sources_task
from govoplan_core.core.module_entitlements import TenantModuleAdmission
class CalendarTaskEntitlementTests(unittest.TestCase):
def test_disabled_tenant_preserves_due_sync_for_operator(self) -> None:
session = SimpleNamespace(commit=lambda: None)
@contextmanager
def session_scope():
yield session
admission = TenantModuleAdmission(
tenant_id="tenant-1",
module_id="calendar",
revision=2,
work_state="accepted",
allowed=False,
disposition="operator_action_required",
reason="Calendar is unavailable.",
)
resolver = SimpleNamespace(admission=lambda *_args, **_kwargs: admission)
registry = SimpleNamespace(
tenant_entitlement_resolver=lambda: resolver,
)
database = SimpleNamespace(SessionLocal=session_scope)
with (
patch(
"govoplan_core.core.worker_runtime.build_worker_platform_registry",
return_value=registry,
),
patch(
"govoplan_core.db.session.get_database",
return_value=database,
),
patch(
"govoplan_calendar.backend.service.sync_due_sources"
) as sync_due,
):
result = sync_due_caldav_sources_task.run("tenant-1", 10)
sync_due.assert_not_called()
self.assertEqual("operator_action_required", result[0]["status"])
if __name__ == "__main__":
unittest.main()