57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
import types
|
|
|
|
import httpx
|
|
|
|
import pytest
|
|
|
|
from ariadne.services.keycloak_admin import KeycloakAdminClient
|
|
|
|
class DummyResponse:
|
|
def __init__(self, payload=None, status_code=200, headers=None):
|
|
self._payload = payload
|
|
self.status_code = status_code
|
|
self.headers = headers or {}
|
|
|
|
def json(self):
|
|
return self._payload
|
|
|
|
def raise_for_status(self):
|
|
if self.status_code >= 400:
|
|
request = httpx.Request("GET", "https://example.com")
|
|
response = httpx.Response(self.status_code, request=request)
|
|
raise httpx.HTTPStatusError("error", request=request, response=response)
|
|
|
|
class DummyClient:
|
|
def __init__(self, responses):
|
|
self._responses = list(responses)
|
|
self.calls = []
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, exc_type, exc, tb):
|
|
return False
|
|
|
|
def _next(self):
|
|
if not self._responses:
|
|
raise RuntimeError("missing response")
|
|
return self._responses.pop(0)
|
|
|
|
def get(self, url, params=None, headers=None):
|
|
self.calls.append(("get", url, params))
|
|
return self._next()
|
|
|
|
def post(self, url, data=None, json=None, headers=None):
|
|
self.calls.append(("post", url, data, json))
|
|
return self._next()
|
|
|
|
def put(self, url, headers=None, json=None):
|
|
self.calls.append(("put", url, json))
|
|
return self._next()
|
|
|
|
__all__ = [name for name in globals() if not name.startswith("__")]
|