pytest 1.2
This commit is contained in:
35
server/testing/tests/Permissions_test.py
Normal file
35
server/testing/tests/Permissions_test.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
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()
|
||||||
Reference in New Issue
Block a user