This commit is contained in:
2026-09-16 17:55:04 +08:00
parent 3f120417d1
commit 4537faf2c4
39 changed files with 986 additions and 423 deletions
+37
View File
@@ -0,0 +1,37 @@
"""批次 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())