Spaces:
Running
Running
| import pytest | |
| from core.brain import app | |
| from fastapi.testclient import TestClient | |
| import os | |
| from unittest.mock import patch | |
| client = TestClient(app) | |
| def test_health_check_api_mode(): | |
| """Vérifie que le health check indique le mode Fallback si aucun modèle n'est chargé.""" | |
| # On s'assure que le modèle est None pour ce test | |
| with patch("core.brain.model", None): | |
| response = client.get("/") | |
| assert response.status_code == 200 | |
| assert response.json()["status"] == "online" | |
| assert response.json()["engine"] == "Fallback-API" | |
| def test_health_check_local_mode(): | |
| """Vérifie que le health check indique le mode Local si un modèle est chargé.""" | |
| with patch("core.brain.model", "MockModel"): | |
| response = client.get("/") | |
| assert response.status_code == 200 | |
| assert response.json()["engine"] == "Animetix-Expert-Local" | |
| def test_generate_fallback_huggingface(mock_post): | |
| """Vérifie que l'API bascule sur Hugging Face en cas d'absence de modèle local.""" | |
| # Configurer le mock pour simuler une réponse de Hugging Face | |
| mock_post.return_value.status_code = 200 | |
| mock_post.return_value.json.return_value = [{"generated_text": "<|assistant|>\nVoici une réponse d'expert."}] | |
| # Simuler l'absence de modèle local et présence de token | |
| with patch("core.brain.model", None), \ | |
| patch.dict(os.environ, {"HF_TOKEN": "mock_token"}): | |
| response = client.post("/generate", json={ | |
| "prompt": "Qui est Naruto ?", | |
| "system_prompt": "Expert mode" | |
| }) | |
| assert response.status_code == 200 | |
| assert "Voici une réponse d'expert" in response.json()["text"] | |
| assert mock_post.called | |
| def test_generate_no_provider_available(): | |
| """Vérifie le message d'erreur si aucun provider (local ou API) n'est dispo.""" | |
| with patch("core.brain.model", None), \ | |
| patch.dict(os.environ, {}, clear=True): | |
| response = client.post("/generate", json={"prompt": "test"}) | |
| assert response.status_code == 200 | |
| assert "aucune unité de calcul d'IA n'est disponible" in response.json()["text"] | |