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.
129 lines
4.8 KiB
129 lines
4.8 KiB
from test_main import *
|
|
import pytest
|
|
from datetime import datetime
|
|
from bson import ObjectId
|
|
from app.routes.auth import users_collection
|
|
|
|
@pytest.mark.order(3)
|
|
def test_set_user_admin():
|
|
# Mettre à jour l'utilisateur testuser2 pour le rendre admin
|
|
users_collection.update_one(
|
|
{"username": "testuser2"},
|
|
{"$set": {"is_admin": True}}
|
|
)
|
|
|
|
# Vérifier que la mise à jour a bien été effectuée
|
|
user = users_collection.find_one({"username": "testuser2"})
|
|
assert user is not None
|
|
assert user["is_admin"] is True
|
|
|
|
def test_get_stats_unauthorized():
|
|
response = client.get("/admin/stats")
|
|
assert response.status_code == 401
|
|
|
|
def test_get_stats(token_second):
|
|
response = client.get("/admin/stats", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
|
|
# Vérifier la structure des statistiques
|
|
assert "general" in data
|
|
assert "last_30_days" in data
|
|
assert "top_users" in data
|
|
assert "top_shared_pins" in data
|
|
|
|
# Vérifier les champs généraux
|
|
assert "total_users" in data["general"]
|
|
assert "total_pins" in data["general"]
|
|
assert "total_images" in data["general"]
|
|
assert "total_friends" in data["general"]
|
|
assert "total_storage_bytes" in data["general"]
|
|
|
|
# Vérifier les statistiques des 30 derniers jours
|
|
assert "new_users" in data["last_30_days"]
|
|
assert "new_pins" in data["last_30_days"]
|
|
assert "new_images" in data["last_30_days"]
|
|
|
|
def test_get_config_unauthorized():
|
|
response = client.get("/admin/config")
|
|
assert response.status_code == 401
|
|
|
|
def test_get_config(token_second):
|
|
response = client.get("/admin/config", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
|
|
# Vérifier les champs de configuration
|
|
assert "max_image_size" in data
|
|
assert "max_images_per_pin" in data
|
|
assert "max_images_per_user" in data
|
|
assert "allowed_image_types" in data
|
|
assert "max_pins_per_user" in data
|
|
assert "max_friends_per_user" in data
|
|
|
|
def test_update_config_unauthorized():
|
|
new_config = {
|
|
"max_image_size": 5000000,
|
|
"max_images_per_pin": 5,
|
|
"max_images_per_user": 100,
|
|
"allowed_image_types": ["image/jpeg", "image/png"],
|
|
"max_pins_per_user": 50,
|
|
"max_friends_per_user": 200
|
|
}
|
|
response = client.patch("/admin/config", json=new_config)
|
|
assert response.status_code == 401
|
|
|
|
def test_update_config(token_second):
|
|
new_config = {
|
|
"max_image_size": 5000000,
|
|
"max_images_per_pin": 5,
|
|
"max_images_per_user": 100,
|
|
"allowed_image_types": ["image/jpeg", "image/png"],
|
|
"max_pins_per_user": 50,
|
|
"max_friends_per_user": 200
|
|
}
|
|
response = client.patch("/admin/config", json=new_config, headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data == new_config
|
|
|
|
def test_list_users_unauthorized():
|
|
response = client.get("/admin/users")
|
|
assert response.status_code == 401
|
|
|
|
def test_list_users(token_second):
|
|
response = client.get("/admin/users", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert isinstance(data, list)
|
|
# Vérifier que la liste contient au moins l'utilisateur testuser2
|
|
assert any(user["username"] == "testuser2" for user in data)
|
|
|
|
def test_delete_user_unauthorized():
|
|
response = client.delete("/admin/user/123")
|
|
assert response.status_code == 401
|
|
|
|
def test_delete_user_invalid_uid(token_second):
|
|
response = client.delete("/admin/user/invalid_uid", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 400
|
|
|
|
def test_delete_user_not_found(token_second):
|
|
# Utiliser un ID qui n'existe probablement pas
|
|
non_existent_id = "507f1f77bcf86cd799439011"
|
|
response = client.delete(f"/admin/user/{non_existent_id}", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 404
|
|
|
|
def test_delete_user(token_second):
|
|
# D'abord, créer un utilisateur à supprimer
|
|
response = client.post("/register", json={"username": "user_to_delete", "password": "password123"})
|
|
assert response.status_code == 200
|
|
user_id = response.json()["user_id"]
|
|
|
|
# Ensuite, supprimer cet utilisateur
|
|
response = client.delete(f"/admin/user/{user_id}", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 200
|
|
assert response.json()["message"] == "Utilisateur supprimé avec succès"
|
|
|
|
# Vérifier que l'utilisateur n'existe plus
|
|
response = client.get(f"/user/{user_id}", headers={"Authorization": f"Bearer {token_second}"})
|
|
assert response.status_code == 404 |