You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.9 KiB
73 lines
2.9 KiB
from test_main import *
|
|
import pytest
|
|
|
|
@pytest.mark.order(1)
|
|
def test_register_user():
|
|
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "access_token" in data
|
|
assert "token_type" in data
|
|
assert "user_id" in data
|
|
|
|
@pytest.mark.order(2)
|
|
def test_register_user_second():
|
|
response = client.post("/register", json={"username": "testuser2", "password": "testpassword2"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "access_token" in data
|
|
assert "token_type" in data
|
|
assert "user_id" in data
|
|
|
|
def test_register_same_user():
|
|
response = client.post("/register", json={"username": "testuser", "password": "testpassword"})
|
|
assert response.status_code == 409 # Conflict - Cannot create two times the same user
|
|
|
|
def test_login_user():
|
|
response = client.post("/login", data={"username": "testuser", "password": "testpassword"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "access_token" in data
|
|
assert "token_type" in data
|
|
assert "user_id" in data
|
|
|
|
|
|
def test_login_user_bad_password():
|
|
response = client.post("/login", data={"username": "testuser", "password": "BADpassword"})
|
|
assert response.status_code == 401 # Unauthorized, bad pwd
|
|
|
|
def test_search_users(token):
|
|
response = client.get("/users?name=testuser", headers={"Authorization": f"Bearer {token}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert isinstance(data, list)
|
|
assert data[0]["username"] == "testuser"
|
|
|
|
def test_search_users_unauthorized():
|
|
response = client.get("/users?name=testuser", headers={"Authorization": "Bearer invalid_token"})
|
|
assert response.status_code == 401
|
|
|
|
def test_search_users_false_regex(token):
|
|
response = client.get("/users?name=*", headers={"Authorization": f"Bearer {token}"})
|
|
assert response.status_code == 422
|
|
|
|
def test_get_user_by_id(token):
|
|
# D'abord, on récupère l'ID d'un utilisateur existant
|
|
search_response = client.get("/users?name=testuser", headers={"Authorization": f"Bearer {token}"})
|
|
user_id = search_response.json()[0]["uid"]
|
|
|
|
# Ensuite, on teste la récupération de cet utilisateur
|
|
response = client.get(f"/user/{user_id}", headers={"Authorization": f"Bearer {token}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["username"] == "testuser"
|
|
|
|
def test_get_user_invalid_id(token):
|
|
response = client.get("/user/invalid_id", headers={"Authorization": f"Bearer {token}"})
|
|
assert response.status_code == 422
|
|
|
|
def test_get_user_not_found(token):
|
|
# On utilise un ID qui n'existe probablement pas
|
|
non_existent_id = "507f1f77bcf86cd799439011"
|
|
response = client.get(f"/user/{non_existent_id}", headers={"Authorization": f"Bearer {token}"})
|
|
assert response.status_code == 404 |