1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/backend/tests/test_requests.py
2025-01-05 06:32:34 +06:00

116 lines
3.5 KiB
Python

import pytest
from fastapi.testclient import TestClient
from app.core.auth import create_access_token
pytestmark = pytest.mark.asyncio
@pytest.mark.asyncio
async def test_create_request(client: TestClient, test_user: dict, redis):
"""Test creating a new request"""
access_token = create_access_token(
data={"sub": test_user["email"], "is_admin": False}
)
request_data = {
"request_type": "technical",
"description": "Test request",
"priority": "medium"
}
response = client.post(
"/api/requests/",
headers={"Authorization": f"Bearer {access_token}"},
json=request_data
)
assert response.status_code == 200
data = response.json()
assert data["request_type"] == request_data["request_type"]
assert data["description"] == request_data["description"]
assert data["priority"] == request_data["priority"]
assert data["status"] == "new"
@pytest.mark.asyncio
async def test_create_request_invalid_priority(client: TestClient, test_user: dict, redis):
"""Test creating a request with invalid priority"""
access_token = create_access_token(
data={"sub": test_user["email"], "is_admin": False}
)
request_data = {
"request_type": "technical",
"description": "Test request",
"priority": "invalid"
}
response = client.post(
"/api/requests/",
headers={"Authorization": f"Bearer {access_token}"},
json=request_data
)
assert response.status_code == 422
@pytest.mark.asyncio
async def test_get_user_requests(client: TestClient, test_user: dict, redis):
"""Test getting user's requests"""
access_token = create_access_token(
data={"sub": test_user["email"], "is_admin": False}
)
response = client.get(
"/api/requests/my",
headers={"Authorization": f"Bearer {access_token}"}
)
assert response.status_code == 200
assert isinstance(response.json(), list)
@pytest.mark.asyncio
async def test_update_request_status(client: TestClient, test_admin: dict, redis):
"""Test updating request status (admin only)"""
access_token = create_access_token(
data={"sub": test_admin["email"], "is_admin": True}
)
# Сначала создаем запрос
request_data = {
"request_type": "technical",
"description": "Test request",
"priority": "medium"
}
create_response = client.post(
"/api/requests/",
headers={"Authorization": f"Bearer {access_token}"},
json=request_data
)
request_id = create_response.json()["id"]
# Теперь обновляем статус
update_data = {
"status": "in_progress"
}
response = client.put(
f"/api/admin/requests/{request_id}/status",
headers={"Authorization": f"Bearer {access_token}"},
json=update_data
)
assert response.status_code == 200
assert response.json()["status"] == "in_progress"
@pytest.mark.asyncio
async def test_update_request_status_not_admin(client: TestClient, test_user: dict, redis):
"""Test updating request status without admin rights"""
access_token = create_access_token(
data={"sub": test_user["email"], "is_admin": False}
)
update_data = {
"status": "in_progress"
}
response = client.put(
"/api/admin/requests/1/status",
headers={"Authorization": f"Bearer {access_token}"},
json=update_data
)
assert response.status_code == 403