Add automated tests with GitHub Actions - TP4
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
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 (maintenant corrigé)
|
||||
def test_simulated_error():
|
||||
"""Test qui était simulé pour valider la détection automatique - maintenant corrigé"""
|
||||
# Test corrigé pour valider que la CI fonctionne
|
||||
assert 1 == 1, "Test corrigé - la CI fonctionne correctement"
|
||||
|
||||
# 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
|
||||
Reference in New Issue
Block a user