from __future__ import annotations
from fastapi.testclient import TestClient
def test_list_users(test_client: TestClient):
res = test_client.get("/api/v1/users")
assert res.status_code == 200
users = res.json()
assert len(users) >= 3
emails = [u["email"] for u in users]
assert "alex@example.com" in emails
assert "sarah@example.com" in emails
assert "jordan@example.com" in emails
def test_delete_user_not_found(test_client: TestClient):
res = test_client.delete("/api/v1/users/non-existent-user-id")
assert res.status_code == 404
assert "error" in res.json()
def test_delete_user_cascade(test_client: TestClient):
# Deleting user_alex cascades to alex's owned items and groups
res = test_client.delete("/api/v1/users/user_alex")
assert res.status_code == 204
# Verify user is gone
users_res = test_client.get("/api/v1/users")
emails = [u["email"] for u in users_res.json()]
assert "alex@example.com" not in emails
# Verify group_home (owned by alex) is removed
groups_res = test_client.get("/api/v1/groups")
group_ids = [g["id"] for g in groups_res.json()]
assert "group_home" not in group_ids