Files
gh-christianlouis-docuelevate/tests/test_views_settings.py
T
2026-02-09 11:57:09 +00:00

61 lines
1.9 KiB
Python

"""Tests for app/views/settings.py module."""
import pytest
from unittest.mock import patch, MagicMock
from app.views.settings import require_admin_access
@pytest.mark.unit
class TestRequireAdminAccess:
"""Tests for require_admin_access decorator."""
@pytest.mark.asyncio
async def test_redirects_non_admin_user(self):
"""Test that non-admin users are redirected."""
@require_admin_access
async def dummy_route(request):
return {"success": True}
mock_request = MagicMock()
mock_request.session = {"user": {"id": "1", "is_admin": False}}
result = await dummy_route(mock_request)
assert result.status_code == 302
@pytest.mark.asyncio
async def test_redirects_when_no_user(self):
"""Test that unauthenticated users are redirected."""
@require_admin_access
async def dummy_route(request):
return {"success": True}
mock_request = MagicMock()
mock_request.session = {}
result = await dummy_route(mock_request)
assert result.status_code == 302
@pytest.mark.asyncio
async def test_allows_admin_user(self):
"""Test that admin users can access the route."""
@require_admin_access
async def dummy_route(request):
return {"success": True}
mock_request = MagicMock()
mock_request.session = {"user": {"id": "admin", "is_admin": True}}
result = await dummy_route(mock_request)
assert result == {"success": True}
@pytest.mark.integration
class TestSettingsView:
"""Tests for settings page endpoint."""
def test_settings_page_redirects_without_admin(self, client):
"""Test settings page redirects non-admin users."""
response = client.get("/settings", follow_redirects=False)
# Should redirect since no user in session
assert response.status_code in (200, 302, 303)