from tests.unit.services.service_helpers import * def test_nextcloud_sync_mail_no_user(monkeypatch) -> None: dummy = types.SimpleNamespace( nextcloud_namespace="nextcloud", nextcloud_mail_sync_cronjob="nextcloud-mail-sync", nextcloud_mail_sync_wait_timeout_sec=90.0, nextcloud_mail_sync_job_ttl_sec=3600, nextcloud_pod_label="app=nextcloud", nextcloud_container="nextcloud", nextcloud_exec_timeout_sec=30.0, nextcloud_db_host="", nextcloud_db_port=5432, nextcloud_db_name="nextcloud", nextcloud_db_user="nextcloud", nextcloud_db_password="", mailu_domain="bstein.dev", mailu_host="mail.bstein.dev", ) monkeypatch.setattr("ariadne.services.nextcloud.settings", dummy) monkeypatch.setattr("ariadne.services.nextcloud.keycloak_admin.ready", lambda: True) monkeypatch.setattr("ariadne.services.nextcloud.keycloak_admin.find_user", lambda *_args, **_kwargs: None) svc = NextcloudService() result = svc.sync_mail("alice", wait=True) assert result["status"] == "ok" def test_nextcloud_missing_config(monkeypatch) -> None: dummy = types.SimpleNamespace( nextcloud_namespace="", nextcloud_mail_sync_cronjob="", nextcloud_mail_sync_wait_timeout_sec=90.0, nextcloud_mail_sync_job_ttl_sec=3600, nextcloud_pod_label="app=nextcloud", nextcloud_container="nextcloud", nextcloud_exec_timeout_sec=30.0, nextcloud_db_host="", nextcloud_db_port=5432, nextcloud_db_name="nextcloud", nextcloud_db_user="nextcloud", nextcloud_db_password="", mailu_domain="bstein.dev", mailu_host="mail.bstein.dev", ) monkeypatch.setattr("ariadne.services.nextcloud.settings", dummy) svc = NextcloudService() with pytest.raises(RuntimeError): svc.sync_mail("alice") def test_nextcloud_sync_missing_username(monkeypatch) -> None: dummy = types.SimpleNamespace( nextcloud_namespace="nextcloud", nextcloud_mail_sync_cronjob="nextcloud-mail-sync", nextcloud_mail_sync_wait_timeout_sec=90.0, nextcloud_mail_sync_job_ttl_sec=3600, nextcloud_pod_label="app=nextcloud", nextcloud_container="nextcloud", nextcloud_exec_timeout_sec=30.0, nextcloud_db_host="", nextcloud_db_port=5432, nextcloud_db_name="nextcloud", nextcloud_db_user="nextcloud", nextcloud_db_password="", mailu_domain="bstein.dev", mailu_host="mail.bstein.dev", ) monkeypatch.setattr("ariadne.services.nextcloud.settings", dummy) monkeypatch.setattr("ariadne.services.nextcloud.PodExecutor", lambda *_args, **_kwargs: DummyExecutor()) svc = NextcloudService() with pytest.raises(RuntimeError): svc.sync_mail(" ", wait=True) def test_nextcloud_sync_no_match(monkeypatch) -> None: dummy = types.SimpleNamespace( nextcloud_namespace="nextcloud", nextcloud_mail_sync_cronjob="nextcloud-mail-sync", nextcloud_mail_sync_wait_timeout_sec=90.0, nextcloud_mail_sync_job_ttl_sec=3600, nextcloud_pod_label="app=nextcloud", nextcloud_container="nextcloud", nextcloud_exec_timeout_sec=30.0, nextcloud_db_host="", nextcloud_db_port=5432, nextcloud_db_name="nextcloud", nextcloud_db_user="nextcloud", nextcloud_db_password="", mailu_domain="bstein.dev", mailu_host="mail.bstein.dev", ) monkeypatch.setattr("ariadne.services.nextcloud.settings", dummy) monkeypatch.setattr("ariadne.services.nextcloud.keycloak_admin.ready", lambda: True) monkeypatch.setattr("ariadne.services.nextcloud.keycloak_admin.find_user", lambda *_args, **_kwargs: None) monkeypatch.setattr("ariadne.services.nextcloud.PodExecutor", lambda *_args, **_kwargs: DummyExecutor()) svc = NextcloudService() result = svc.sync_mail("alice", wait=False) assert result["status"] == "ok"