38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
|
|
"""批次 1 部署治理回归测试。
|
|||
|
|
|
|||
|
|
覆盖:
|
|||
|
|
- AUTO_MIGRATE 开关:env 解析与默认值(默认 true 保持现行启动行为)
|
|||
|
|
- create_admin_user:ADMIN_PASSWORD 未配置时显式报错,不创建空口令管理员
|
|||
|
|
"""
|
|||
|
|
import pytest
|
|||
|
|
from unittest.mock import MagicMock
|
|||
|
|
|
|||
|
|
from shared.config.settings import Settings
|
|||
|
|
|
|||
|
|
|
|||
|
|
def test_auto_migrate_default_true(monkeypatch):
|
|||
|
|
"""未配置时默认 true:保持既有单机开发行为(启动即迁移)。"""
|
|||
|
|
monkeypatch.delenv("AUTO_MIGRATE", raising=False)
|
|||
|
|
assert Settings().AUTO_MIGRATE is True
|
|||
|
|
|
|||
|
|
|
|||
|
|
def test_auto_migrate_env_parsing(monkeypatch):
|
|||
|
|
monkeypatch.setenv("AUTO_MIGRATE", "false")
|
|||
|
|
assert Settings().AUTO_MIGRATE is False
|
|||
|
|
monkeypatch.setenv("AUTO_MIGRATE", "true")
|
|||
|
|
assert Settings().AUTO_MIGRATE is True
|
|||
|
|
|
|||
|
|
|
|||
|
|
@pytest.mark.asyncio
|
|||
|
|
async def test_create_admin_without_password_is_explicit_error(monkeypatch):
|
|||
|
|
"""ADMIN_PASSWORD 缺失必须显式失败(compose 已去弱默认),而非静默创建空口令管理员。"""
|
|||
|
|
# init_db 顶层 import alembic;未安装 alembic 的环境跳过(与 OCC 测试同策略)
|
|||
|
|
pytest.importorskip("alembic.config")
|
|||
|
|
from shared.config.settings import settings
|
|||
|
|
from shared.database.init_db import create_admin_user
|
|||
|
|
|
|||
|
|
monkeypatch.setattr(settings, "ADMIN_PASSWORD", None)
|
|||
|
|
# 校验发生在任何 DB 访问之前,MagicMock 会话不会被触碰
|
|||
|
|
with pytest.raises(RuntimeError, match="ADMIN_PASSWORD"):
|
|||
|
|
await create_admin_user(MagicMock())
|