pillchecker-staging / tests /test_admin.py
SPerva's picture
Sync from GitHub via hub-sync
4f2020d verified
"""Tests for admin cache management endpoint."""
import os
import pytest
from unittest.mock import patch, MagicMock, AsyncMock
from fastapi.testclient import TestClient
@pytest.fixture
def client():
mock_drugbank = MagicMock()
mock_drugbank.connect = AsyncMock()
mock_drugbank.close = AsyncMock()
mock_drugbank.health_check = AsyncMock(return_value=True)
mock_severity = MagicMock()
mock_severity.load_model = MagicMock()
mock_severity.is_loaded.return_value = True
with (
patch.dict(os.environ, {"API_KEY": "test-key"}),
patch("app.main.drugbank_client", mock_drugbank),
patch("app.main.severity_classifier", mock_severity),
patch("app.main.ner_model"),
patch("app.api.health.drugbank_client", mock_drugbank),
patch("app.services.interaction_checker.drugbank_client", mock_drugbank),
patch("app.services.interaction_checker.severity_classifier", mock_severity),
):
from app.main import app
yield TestClient(app)
class TestAdminCacheClear:
def test_clears_cache_with_valid_key(self, client):
resp = client.post("/admin/cache/clear", headers={"X-API-Key": "test-key"})
assert resp.status_code == 200
assert resp.json()["status"] == "ok"
def test_rejects_without_key(self, client):
resp = client.post("/admin/cache/clear")
assert resp.status_code == 401