# retoor <retoor@molodetz.nl>
from __future__ import annotations
from typing import Any
from fastapi import FastAPI
from starlette.testclient import TestClient
from devplacepy_services.base.auth import set_internal_gateway_key
class ServiceTestClient:
def __init__(
self,
app: FastAPI,
*,
internal_key: str = "test-internal-key",
authenticated_user: str | None = None,
) -> None:
set_internal_gateway_key(internal_key)
headers: dict[str, str] = {"X-Internal-Key": internal_key}
if authenticated_user:
headers["X-Authenticated-User"] = authenticated_user
self._client = TestClient(app, headers=headers)
def get(self, path: str, **kwargs: Any):
return self._client.get(path, **kwargs)
def post(self, path: str, **kwargs: Any):
return self._client.post(path, **kwargs)
def put(self, path: str, **kwargs: Any):
return self._client.put(path, **kwargs)
def delete(self, path: str, **kwargs: Any):
return self._client.delete(path, **kwargs)
def close(self) -> None:
self._client.close()