test: add comprehensive tests across modules to increase coverage above 60%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""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)
|
||||
Reference in New Issue
Block a user