92 lines
3.3 KiB
Python
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
|