import pytest from fastapi.testclient import TestClient from src.main import app client = TestClient(app) def test_create_user(): response = client.post( "/users/", json={ "email": "test@example.com", "first_name": "Test", "last_name": "User", "password": "testpassword" } ) assert response.status_code == 201 data = response.json() assert data["email"] == "test@example.com" assert "id" in data def test_read_users(): response = client.get("/users/") assert response.status_code == 200 data = response.json() assert isinstance(data, list) def test_read_user(): # First create a user response = client.post( "/users/", json={ "email": "test2@example.com", "first_name": "Test2", "last_name": "User2", "password": "testpassword" } ) assert response.status_code == 201 user_id = response.json()["id"] # Then read the user response = client.get(f"/users/{user_id}") assert response.status_code == 200 data = response.json() assert data["id"] == user_id def test_update_user(): # First create a user response = client.post( "/users/", json={ "email": "test3@example.com", "first_name": "Test3", "last_name": "User3", "password": "testpassword" } ) assert response.status_code == 201 user_id = response.json()["id"] # Then update the user response = client.put( f"/users/{user_id}", json={ "email": "updated@example.com", "first_name": "Updated", "last_name": "User", "password": "updatedpassword" } ) assert response.status_code == 200 data = response.json() assert data["email"] == "updated@example.com" def test_delete_user(): # First create a user response = client.post( "/users/", json={ "email": "test4@example.com", "first_name": "Test4", "last_name": "User4", "password": "testpassword" } ) assert response.status_code == 201 user_id = response.json()["id"] # Then delete the user response = client.delete(f"/users/{user_id}") assert response.status_code == 204