e833b923c8
接入 Playwright Worker、会话 WebSocket 与全局浏览器面板(固定于 App Bar 下); 含验证码 stealth、设置项默认音与 URL 安全校验;附带 worker 部署与设计文档。 Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
"""GET /api/settings/{key} defaults when row missing."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
import pytest
|
|
from fastapi import HTTPException
|
|
|
|
from server.api.settings import SETTING_DEFAULTS, get_setting
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_push_complete_sound_default_when_missing():
|
|
admin = MagicMock()
|
|
db = AsyncMock()
|
|
with patch("server.api.settings.SettingRepositoryImpl") as repo_cls:
|
|
repo_cls.return_value.get = AsyncMock(return_value=None)
|
|
out = await get_setting("push_complete_sound", admin=admin, db=db)
|
|
assert out["key"] == "push_complete_sound"
|
|
assert out["value"] == SETTING_DEFAULTS["push_complete_sound"]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_unknown_key_still_404():
|
|
admin = MagicMock()
|
|
db = AsyncMock()
|
|
with patch("server.api.settings.SettingRepositoryImpl") as repo_cls:
|
|
repo_cls.return_value.get = AsyncMock(return_value=None)
|
|
with pytest.raises(HTTPException) as exc:
|
|
await get_setting("nonexistent_setting_key", admin=admin, db=db)
|
|
assert exc.value.status_code == 404
|