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())
|