fix: remove websocket_connect and properly mock require_admin dependency
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
+22
-17
@@ -88,26 +88,31 @@ class TestSettingsEndpointsWithAuth:
|
|||||||
@patch("app.api.settings.get_setting_metadata")
|
@patch("app.api.settings.get_setting_metadata")
|
||||||
def test_get_all_settings_success(self, mock_metadata, mock_categories, mock_db_settings, client, db_session):
|
def test_get_all_settings_success(self, mock_metadata, mock_categories, mock_db_settings, client, db_session):
|
||||||
"""Test GET /settings returns all settings."""
|
"""Test GET /settings returns all settings."""
|
||||||
# Mock admin session
|
from app.api.settings import require_admin
|
||||||
with client as test_client:
|
from app.main import app as fastapi_app
|
||||||
with test_client.websocket_connect("/") as ws:
|
|
||||||
pass # Just to establish session
|
|
||||||
test_client.cookies.set("session", "test_session")
|
|
||||||
|
|
||||||
# Mock the settings data
|
# Mock the settings data
|
||||||
mock_db_settings.return_value = {"test_key": "test_value"}
|
mock_db_settings.return_value = {"test_key": "test_value"}
|
||||||
mock_categories.return_value = {"General": ["workdir", "debug"]}
|
mock_categories.return_value = {"General": ["workdir", "debug"]}
|
||||||
mock_metadata.return_value = {"type": "str", "description": "Test setting"}
|
mock_metadata.return_value = {"type": "str", "description": "Test setting"}
|
||||||
|
|
||||||
# Create mock request with admin user
|
# Override the require_admin dependency to return a mock admin user
|
||||||
mock_request = Mock()
|
def override_require_admin():
|
||||||
mock_request.session = {"user": {"id": "admin", "is_admin": True}}
|
return {"id": "admin", "is_admin": True}
|
||||||
|
|
||||||
# The endpoint requires admin auth, so this will fail without proper session setup
|
fastapi_app.dependency_overrides[require_admin] = override_require_admin
|
||||||
# We're testing the logic, not the full auth flow
|
|
||||||
response = test_client.get("/api/settings/")
|
try:
|
||||||
# Should be 403 without proper admin session
|
# Make the request with the mocked admin dependency
|
||||||
assert response.status_code in [302, 401, 403]
|
response = client.get("/api/settings/")
|
||||||
|
assert response.status_code == 200
|
||||||
|
data = response.json()
|
||||||
|
assert "settings" in data
|
||||||
|
assert "categories" in data
|
||||||
|
assert "db_settings" in data
|
||||||
|
finally:
|
||||||
|
# Clean up the override
|
||||||
|
fastapi_app.dependency_overrides.pop(require_admin, None)
|
||||||
|
|
||||||
@patch("app.api.settings.get_setting_metadata")
|
@patch("app.api.settings.get_setting_metadata")
|
||||||
def test_get_single_setting_returns_metadata(self, mock_metadata, client):
|
def test_get_single_setting_returns_metadata(self, mock_metadata, client):
|
||||||
|
|||||||
Reference in New Issue
Block a user