ssf-2025-ana/Backend/tests/test_user.py
2025-09-13 16:18:28 +09:00

68 lines
2.1 KiB
Python

from io import BytesIO
def test_user_registration_and_login(client):
# Registration
user_data = {
"username": "testuser999",
"email": "test@example.com",
"password": "testpassword123",
}
response = client.post(
"/api/user/register",
data=user_data,
files={"file": ("a.jpg", BytesIO(b"aaa"), "image/jpeg")},
)
assert response.status_code == 201
assert response.json()["username"] == "testuser999"
# Duplicate registration
response = client.post(
"/api/user/register",
data=user_data,
files={"file": ("a.jpg", BytesIO(b"aaa"), "image/jpeg")},
)
assert response.status_code == 400
assert response.json()["detail"] == "Username already registered"
# Login
login_data = {
"username": "testuser999",
"password": "testpassword123",
}
response = client.post("/api/user/login", json=login_data)
assert response.status_code == 200
assert "access_token" in response.json()
# Login with wrong password
login_data["password"] = "wrongpassword"
response = client.post("/api/user/login", json=login_data)
assert response.status_code == 401
assert response.json()["detail"] == "Invalid username or password"
# delete
response = client.delete(f"/api/user/{user_data['username']}")
assert response.status_code == 200
def test_get_user_profile(client, authenticated_user):
token = authenticated_user["token"]
username = authenticated_user["user_data"]["username"]
headers = {"Authorization": f"Bearer {token}"}
response = client.get(f"/api/user/profile/{username}", headers=headers)
assert response.status_code == 200
assert response.json()["username"] == username
def test_user_delete(client, authenticated_user):
token = authenticated_user["token"]
username = authenticated_user["user_data"]["username"]
headers = {"Authorization": f"Bearer {token}"}
response = client.delete(f"/api/user/{username}", headers=headers)
assert response.status_code == 200
assert response.json()["detail"] == "User deleted"