51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
|
|
import types
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from ariadne.k8s.exec import ExecError
|
||
|
|
from ariadne.services import nextcloud_maintenance as maintenance
|
||
|
|
|
||
|
|
|
||
|
|
def _settings(**overrides):
|
||
|
|
base = {
|
||
|
|
"nextcloud_namespace": "nextcloud",
|
||
|
|
"nextcloud_exec_timeout_sec": 30.0,
|
||
|
|
"nextcloud_url": "https://cloud.bstein.dev",
|
||
|
|
}
|
||
|
|
base.update(overrides)
|
||
|
|
return types.SimpleNamespace(**base)
|
||
|
|
|
||
|
|
|
||
|
|
def test_nextcloud_maintenance_requires_namespace(monkeypatch) -> None:
|
||
|
|
monkeypatch.setattr(maintenance, "settings", _settings(nextcloud_namespace=""))
|
||
|
|
|
||
|
|
with pytest.raises(RuntimeError, match="not configured"):
|
||
|
|
maintenance.run_maintenance(types.SimpleNamespace())
|
||
|
|
|
||
|
|
|
||
|
|
def test_nextcloud_maintenance_handles_exec_error(monkeypatch) -> None:
|
||
|
|
monkeypatch.setattr(maintenance, "settings", _settings())
|
||
|
|
|
||
|
|
class Executor:
|
||
|
|
def exec(self, *args, **kwargs):
|
||
|
|
raise ExecError("pod failed")
|
||
|
|
|
||
|
|
service = types.SimpleNamespace(_executor=Executor())
|
||
|
|
|
||
|
|
assert maintenance.run_maintenance(service) == {"status": "error", "detail": "pod failed"}
|
||
|
|
|
||
|
|
|
||
|
|
def test_nextcloud_maintenance_handles_generic_error(monkeypatch) -> None:
|
||
|
|
monkeypatch.setattr(maintenance, "settings", _settings())
|
||
|
|
|
||
|
|
class Executor:
|
||
|
|
def exec(self, *args, **kwargs):
|
||
|
|
return None
|
||
|
|
|
||
|
|
def fail_occ(_args):
|
||
|
|
raise ValueError("occ failed")
|
||
|
|
|
||
|
|
service = types.SimpleNamespace(_executor=Executor(), _occ=fail_occ)
|
||
|
|
|
||
|
|
assert maintenance.run_maintenance(service) == {"status": "error", "detail": "occ failed"}
|