ariadne/tests/unit/services/service_helpers.py

74 lines
1.9 KiB
Python

from __future__ import annotations
import time
import types
import pytest
from ariadne.services import mailu as mailu_module
from ariadne.services.firefly import FireflyService
from ariadne.services.mailu import MailuService
from ariadne.services.nextcloud import NextcloudService
from ariadne.services.wger import WgerService
from ariadne.services.vaultwarden import VaultwardenService
class DummyExecutor:
def __init__(self, stdout: str = "ok", stderr: str = "", exit_code: int = 0):
self.calls = []
self._stdout = stdout
self._stderr = stderr
self._exit_code = exit_code
def exec(self, command, env=None, timeout_sec=None, check=True):
self.calls.append((command, env, timeout_sec, check))
return types.SimpleNamespace(
stdout=self._stdout,
stderr=self._stderr,
exit_code=self._exit_code,
ok=self._exit_code == 0,
)
class DummyResponse:
def __init__(self, status_code=200, text="", json_data=None):
self.status_code = status_code
self.text = text
self._json_data = json_data
def raise_for_status(self):
return None
def json(self):
if self._json_data is None:
raise ValueError("no json data")
return self._json_data
class DummyVaultwardenClient:
def __init__(self):
self.calls = []
self.responses = {}
def post(self, path, json=None, data=None):
self.calls.append((path, json, data))
resp = self.responses.get(path)
if resp is None:
resp = DummyResponse(200, "")
return resp
def get(self, path):
self.calls.append((path, None, None))
resp = self.responses.get(path)
if resp is None:
resp = DummyResponse(200, "", json_data=[])
return resp
def close(self):
return None
__all__ = [name for name in globals() if not name.startswith("__")]