feat: 切换邮箱认证并重构前后端启动与门禁
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
import app as app_module
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_lifespan_uses_registered_services(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
initialized_services = [object(), object()]
|
||||
calls: dict[str, object] = {}
|
||||
|
||||
async def _fake_initialize(service_names: list[str]) -> tuple[bool, list[object]]:
|
||||
calls["init_names"] = service_names
|
||||
return True, initialized_services
|
||||
|
||||
async def _fake_close(services: list[object]) -> bool:
|
||||
calls["close_services"] = services
|
||||
return True
|
||||
|
||||
monkeypatch.setattr(app_module, "initialize_registered_services", _fake_initialize)
|
||||
monkeypatch.setattr(app_module, "close_registered_services", _fake_close)
|
||||
|
||||
context = app_module.lifespan(app_module.app)
|
||||
await context.__aenter__()
|
||||
await context.__aexit__(None, None, None)
|
||||
|
||||
assert calls["init_names"] == ["redis", "supabase"]
|
||||
assert calls["close_services"] == initialized_services
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_lifespan_raises_when_initialization_failed(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
async def _fake_initialize(_: list[str]) -> tuple[bool, list[object]]:
|
||||
return False, []
|
||||
|
||||
monkeypatch.setattr(app_module, "initialize_registered_services", _fake_initialize)
|
||||
|
||||
context = app_module.lifespan(app_module.app)
|
||||
with pytest.raises(RuntimeError, match="Service initialization failed"):
|
||||
await context.__aenter__()
|
||||
Reference in New Issue
Block a user