Files
dockezr/test_api.py
T
2025-10-14 13:00:02 +04:00

92 lines
3.3 KiB
Python

import pytest
import requests
import os
import time
# Configuration
BASE_URL = os.getenv("API_BASE_URL", "http://localhost:8000")
class TestAPI:
"""Tests pour l'API de réservation de salles Expernet"""
def test_health_endpoint(self):
"""Test que l'endpoint /health retourne 200"""
response = requests.get(f"{BASE_URL}/health")
assert response.status_code == 200
assert response.json()["status"] == "healthy"
def test_rooms_endpoint(self):
"""Test que l'endpoint /rooms retourne 200"""
response = requests.get(f"{BASE_URL}/rooms")
assert response.status_code == 200
assert isinstance(response.json(), list)
# Vérifier qu'il y a au moins une salle
rooms = response.json()
assert len(rooms) > 0
# Vérifier la structure d'une salle
if rooms:
room = rooms[0]
assert "id" in room
assert "name" in room
assert "capacity" in room
def test_reservations_endpoint(self):
"""Test que l'endpoint /reservations retourne 200"""
response = requests.get(f"{BASE_URL}/reservations")
assert response.status_code == 200
assert isinstance(response.json(), list)
def test_root_endpoint(self):
"""Test que l'endpoint racine retourne 200"""
response = requests.get(f"{BASE_URL}/")
assert response.status_code == 200
data = response.json()
assert "message" in data
assert "status" in data
def test_room_by_id(self):
"""Test récupération d'une salle par ID"""
# D'abord récupérer la liste des salles
rooms_response = requests.get(f"{BASE_URL}/rooms")
assert rooms_response.status_code == 200
rooms = rooms_response.json()
if rooms:
room_id = rooms[0]["id"]
response = requests.get(f"{BASE_URL}/rooms/{room_id}")
assert response.status_code == 200
room = response.json()
assert "id" in room
assert "name" in room
assert "capacity" in room
assert room["id"] == room_id
def test_room_not_found(self):
"""Test qu'un ID de salle inexistant retourne 404"""
response = requests.get(f"{BASE_URL}/rooms/99999")
assert response.status_code == 404
def test_reservations_by_date(self):
"""Test récupération des réservations par date"""
# Utiliser une date future
test_date = "2025-12-31"
response = requests.get(f"{BASE_URL}/reservations/date/{test_date}")
assert response.status_code == 200
assert isinstance(response.json(), list)
# Test pour simuler une erreur (à corriger ensuite)
def test_simulated_error():
"""Test qui va échouer pour valider la détection automatique"""
# Cette ligne va causer une erreur intentionnellement
assert 1 == 2, "Erreur simulée pour tester la CI - à corriger après validation"
# Test de performance basique
def test_api_response_time():
"""Test que l'API répond dans un temps raisonnable"""
start_time = time.time()
response = requests.get(f"{BASE_URL}/health")
end_time = time.time()
assert response.status_code == 200
assert (end_time - start_time) < 5.0 # Moins de 5 secondes