73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from fastapi import HTTPException
|
|
|
|
from app.gateway.routers import system_settings as system_settings_router
|
|
from deerflow.config.system_settings import SystemSettings
|
|
|
|
|
|
def test_strategy_project_demo_is_hidden_by_default() -> None:
|
|
assert SystemSettings().strategy_projects.taiwan_strait_demo_enabled is False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_non_admin_cannot_update_strategy_project_settings(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
async def ordinary_user(_request):
|
|
return SimpleNamespace(system_role="user")
|
|
|
|
monkeypatch.setattr(
|
|
system_settings_router,
|
|
"get_optional_user_from_request",
|
|
ordinary_user,
|
|
)
|
|
|
|
with pytest.raises(HTTPException) as error:
|
|
await system_settings_router.update_strategy_project_settings(
|
|
system_settings_router.StrategyProjectSettingsUpdateRequest(
|
|
taiwan_strait_demo_enabled=True,
|
|
),
|
|
SimpleNamespace(),
|
|
)
|
|
|
|
assert error.value.status_code == 403
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_admin_can_update_strategy_project_settings(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
current = SystemSettings()
|
|
saved: list[SystemSettings] = []
|
|
|
|
async def admin_user(_request):
|
|
return SimpleNamespace(system_role="admin")
|
|
|
|
monkeypatch.setattr(
|
|
system_settings_router,
|
|
"get_optional_user_from_request",
|
|
admin_user,
|
|
)
|
|
monkeypatch.setattr(
|
|
system_settings_router,
|
|
"load_system_settings",
|
|
lambda: current,
|
|
)
|
|
monkeypatch.setattr(
|
|
system_settings_router,
|
|
"save_system_settings",
|
|
lambda settings: saved.append(settings) or settings,
|
|
)
|
|
|
|
response = await system_settings_router.update_strategy_project_settings(
|
|
system_settings_router.StrategyProjectSettingsUpdateRequest(
|
|
taiwan_strait_demo_enabled=True,
|
|
),
|
|
SimpleNamespace(),
|
|
)
|
|
|
|
assert response.taiwan_strait_demo_enabled is True
|
|
assert saved[0].strategy_projects.taiwan_strait_demo_enabled is True
|