import pytest from tests.base import avatar_index, client, register_user, username from tests.config.database import clear_db patched_username = "New name" patched_password = "New password" patched_avatar_index = 2 @pytest.mark.asyncio async def test_patch_user(): """Test the patching of a user's username, password and avatar""" clear_db() token = await register_user() headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} response = client.patch( "/users", json={ "username": patched_username, "password": patched_password, "avatar_index": patched_avatar_index, }, headers=headers, ) assert response.status_code == 200 response = client.post( "/login", headers={"Content-Type": "application/json"}, json={"username": patched_username, "password": patched_password}, ) assert response.status_code == 200 token = response.json()["access_token"] headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} response = client.get("/saveddata", headers=headers) assert response.status_code == 200 # Correctness of password and username is already asserted by the login assert response.json()["avatar_index"] == patched_avatar_index @pytest.mark.asyncio async def test_patch_user_with_empty_fields(): """Patching a user with empty fields should fail""" clear_db() token = await register_user() headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"} response = client.patch( "/users", json={ "username": "", "password": patched_password, "avatar_index": patched_avatar_index, "playtime": 0.0 }, headers=headers, ) assert response.status_code == 200 response = client.patch( "/users", json={ "username": username, "password": patched_password, "avatar_index": -1, "playtime": 0.0 }, headers=headers, ) assert response.status_code == 200 response = client.patch( "/users", json={ "username": username, "password": "", "avatar_index": patched_avatar_index, "playtime": 0.0 }, headers=headers, ) assert response.status_code == 200