/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
tests/api/admin/test_auth.py
89 строк
3 KB
Василий Петров
api/admin/login добавлен вывод информации об админе
29 ноя 2025, 11:23
29 ноя 2025, 11:23
27679b8
Код
Авторство
О чём код?
import uuid from app.models.admin import Admin from app.core.security import _SESSIONS # доступ к хранилищу сессий def test_login_success(client, db_session): email = f"admin_{uuid.uuid4().hex}@example.com" admin = Admin(email=email, first_name="Тест", last_name="Фамилия") admin.set_password("password123") db_session.add(admin) db_session.commit() # Запрос response = client.post("/api/admin/login", data={ "email": email, "password": "password123" }) assert response.status_code == 200 data = response.json() assert "access_token" in data assert "admin" in data admin_info = data["admin"] assert admin_info["email"] == email assert admin_info["first_name"] == "Тест" assert admin_info["last_name"] == "Фамилия" def test_login_wrong_password(client, db_session): email = f"admin_{uuid.uuid4().hex}@example.com" password = "correct_password" admin = Admin(email=email, first_name="Тест", last_name="Фамилия") admin.set_password(password) db_session.add(admin) db_session.commit() # Попытка входа с неверным паролем response = client.post("/api/admin/login", data={ "email": email, "password": "wrong_password" }) assert response.status_code == 401 assert response.json() == {"detail": "Неверный логин или пароль"} def test_login_nonexistent_email(client, db_session): # Без создания админа email = f"nonexistent_{uuid.uuid4().hex}@example.com" response = client.post("/api/admin/login", data={ "email": email, "password": "anything" }) assert response.status_code == 401 assert response.json() == {"detail": "Неверный логин или пароль"} def test_logout_success(client, db_session): # 1. Подготавливаем админа email = f"admin_{uuid.uuid4().hex}@example.com" admin = Admin(email=email, first_name="Тест", last_name="Фамилия") admin.set_password("password123") db_session.add(admin) db_session.commit() # 2. Логинимся и получаем токен login_resp = client.post("/api/admin/login", data={ "email": email, "password": "password123" }) token = login_resp.json()["access_token"] # Убеждаемся, что токен есть в сессиях assert token in _SESSIONS # 3. Выполняем выход logout_resp = client.post("/api/admin/logout", headers={ "Authorization": f"Bearer {token}" }) assert logout_resp.status_code == 200 assert logout_resp.json() == {"message": "Выход выполнен успешно"} # 4. Проверяем, что токен удалён assert token not in _SESSIONS # 5. Попытка использовать отозванный токен protected_resp = client.get("/api/admin/dashboard", headers={ "Authorization": f"Bearer {token}" }) print(protected_resp.json()) assert protected_resp.status_code == 401 assert protected_resp.json() == {"detail": "Недействительный токен"}