Spaces:
Sleeping
Sleeping
| """ | |
| Tests des endpoints Utilisateurs | |
| """ | |
| import pytest | |
| from fastapi.testclient import TestClient | |
| class TestUserEndpoints: | |
| """Tests pour les routes /api/v1/users/*""" | |
| def test_create_user_success(self, client: TestClient): | |
| """POST /api/v1/users/ doit créer un utilisateur et retourner 201""" | |
| payload = { | |
| "name": "Alice Dupont", | |
| "email": "alice@example.com", | |
| "institution": "CNRS", | |
| "role": "researcher", | |
| } | |
| response = client.post("/api/v1/users/", json=payload) | |
| assert response.status_code == 201 | |
| data = response.json() | |
| assert data["email"] == payload["email"] | |
| assert data["name"] == payload["name"] | |
| assert "id" in data | |
| def test_create_user_duplicate_email(self, client: TestClient): | |
| """POST avec un email déjà existant doit retourner 409 Conflict""" | |
| payload = { | |
| "name": "Alice Dupont", | |
| "email": "duplicate@example.com", | |
| "institution": "CNRS", | |
| } | |
| client.post("/api/v1/users/", json=payload) # Premier appel — OK | |
| response = client.post("/api/v1/users/", json=payload) # Doublon | |
| assert response.status_code == 409 | |
| def test_create_user_missing_email(self, client: TestClient): | |
| """POST sans email doit retourner 422 Unprocessable Entity""" | |
| payload = {"name": "Bob Martin"} | |
| response = client.post("/api/v1/users/", json=payload) | |
| assert response.status_code == 422 | |
| def test_get_user_not_found(self, client: TestClient): | |
| """GET d'un UUID inexistant doit retourner 404""" | |
| fake_uuid = "00000000-0000-0000-0000-000000000001" | |
| response = client.get(f"/api/v1/users/{fake_uuid}") | |
| assert response.status_code == 404 | |