"""回归守卫:`.env.example` 不得携带可用的真实密钥(CR-H8)。 `.env.example` 是入库模板;若其中的 `CREDENTIAL_ENC_KEY` 是一把真实可用的 Fernet key,任何照抄 `.env.example` 的环境都会共用同一把泄露过的密钥。此测试 确保模板里只放**不可用占位符**——照抄到 `.env` 会在启动校验(main._lifespan) 处快速失败,逼迫运维生成真实 key。 """ from __future__ import annotations import re from pathlib import Path import pytest from cryptography.fernet import Fernet _ENV_EXAMPLE = Path(__file__).resolve().parent.parent / ".env.example" _PLACEHOLDER = "replace-me-with-generated-fernet-key" def _credential_enc_key() -> str: text = _ENV_EXAMPLE.read_text(encoding="utf-8") match = re.search(r"^CREDENTIAL_ENC_KEY=(.*)$", text, flags=re.MULTILINE) assert match is not None, ".env.example 缺少 CREDENTIAL_ENC_KEY 行" return match.group(1).strip() def test_env_example_credential_key_is_non_functional_placeholder() -> None: value = _credential_enc_key() assert value, "CREDENTIAL_ENC_KEY 不能为空" # 真实可用的 Fernet key 会构造成功——那正是要杜绝的泄露面。 with pytest.raises(ValueError): Fernet(value.encode()) def test_env_example_credential_key_is_the_expected_placeholder() -> None: # 更紧的锁:值必须恰是约定占位符,防止未来又塞进别的真实 key。 assert _credential_enc_key() == _PLACEHOLDER