pytest 1.5

This commit is contained in:
2025-10-12 18:30:20 +03:00
parent 1423ca9e68
commit bc5360d9f6

View File

@@ -77,14 +77,44 @@ async def test_is_admin(client, monkeypatch, global_email, is_admin, expected_st
assert response.status_code == expected_status
api.dependency_overrides.clear()
@pytest.mark.parametrize("is_admin,expected_status", [
(False, 403),
(True, 200)
])
@pytest.mark.asyncio
async def test_delete_user(client,global_email):
'''Проверка: Удаление пользователя'''
async def test_delete_user(client, global_email, monkeypatch, is_admin, expected_status):
"""Проверка: Удаление пользователя"""
async def fake_current_user(): #фейковая зависимость (fake_current_user) — функция, которая имитирует поведение настоящего JWT.current_user, но просто возвращает строку "test_user".
return "daun2@example.com"
api.dependency_overrides[JWT.current_user] = fake_current_user
response = await client.delete(f"/user_delete/{global_email}")
assert response.status_code == status.HTTP_200_OK
class FakePerm:
def __init__(self, is_admin):
self.is_admin = is_admin
self.can_edit = False
self.can_delete = False
self.can_view = False
class FakeUser:
def __init__(self, is_admin):
self.email = global_email
self.permissions = [FakePerm(is_admin)]
self.description = "test_user"
self.activated = True
self.password = "123qwe!@#"
# добавляем обязательные поля из модели UserOut
self.created_at = "2025-10-12T00:00:00Z"
self.updated_at = "2025-10-12T00:00:00Z"
self.last_login = None
async def fake_get_user_by_email(email):
return FakeUser(is_admin)
monkeypatch.setattr(db, "get_user_by_email", fake_get_user_by_email)
async def fake_current_user():
return global_email
api.dependency_overrides[JWT.current_user] = fake_current_user
response = await client.delete(
f"/user_delete/{global_email}",
headers={"Authorization": "Bearer faketoken"}
)
assert response.status_code == expected_status
api.dependency_overrides.clear()