feat(auth): 内测登录改为显式开关,并支持后端单端口托管前端产物
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""生产配置校验:固定验证码必须显式开关,否则启动即失败。
|
||||
|
||||
这两条是「部署纪律」的守门员:生产一旦误用 dev 验证码,等于任意手机号可登录。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from app.config import Settings
|
||||
|
||||
_STRONG_SECRET = "x" * 48
|
||||
_PROD_DB = "postgresql+asyncpg://dadao_prod_app:pw@192.168.8.160:8432/dadaotask_prod"
|
||||
|
||||
|
||||
def _prod(**overrides: object) -> Settings:
|
||||
values: dict[str, object] = {
|
||||
"env": "prod",
|
||||
"jwt_secret": _STRONG_SECRET,
|
||||
"database_url": _PROD_DB,
|
||||
"sms_provider": "aliyun",
|
||||
}
|
||||
values.update(overrides)
|
||||
return Settings(**values)
|
||||
|
||||
|
||||
def test_prod_rejects_dev_sms_without_switch() -> None:
|
||||
with pytest.raises(RuntimeError, match="SMS_PROVIDER=dev"):
|
||||
_prod(sms_provider="dev").validate_runtime()
|
||||
|
||||
|
||||
def test_prod_allows_dev_sms_with_internal_test_login() -> None:
|
||||
# 内测模式:显式开关后放行,启动时 main.lifespan 会打 WARNING
|
||||
_prod(sms_provider="dev", internal_test_login=True).validate_runtime()
|
||||
|
||||
|
||||
def test_prod_still_rejects_weak_jwt_secret() -> None:
|
||||
with pytest.raises(RuntimeError, match="JWT_SECRET"):
|
||||
_prod(jwt_secret="short").validate_runtime()
|
||||
Reference in New Issue
Block a user