import pytest import uuid #для генерации рандомного uuid from httpx import AsyncClient, ASGITransport from fastapi import status from server.backend import JWT # твой JWT модуль from server.backend.endpoints import api from server.testing.conftest import client from server.database import db @pytest.mark.asyncio async def test_is_admin(client, monkeypatch): '''Проверка: Может ли человек без админки менять права''' random_email = f"user_{uuid.uuid4().hex[:8]}@test.local" async def fake_user(): class FakeUser: email = random_email permissions = [{"is_admin": False}] password = "123qwe!@#" description = "test_user" activated = True return FakeUser() async def fake_current_user(): #фейковая зависимость (fake_current_user) — функция, которая имитирует поведение настоящего JWT.current_user, но просто возвращает строку "test_user". user_email = await fake_user() return user_email.email user = await fake_user() #Создаем экземпляр для добавления в бд await db.create_user(user) api.dependency_overrides[JWT.current_user] = fake_current_user response = await client.put(f"/user_update/{fake_current_user}", headers={"Authorization": "Bearer faketoken"}, data={"can_edit":True}) assert response.status_code == status.HTTP_403_FORBIDDEN await db.delete_user(user.email) #удаляется юзер из бд после теста api.dependency_overrides.clear()