"""数据零出域红线测试:prod 环境必须禁用公网 LLM Provider。""" import pytest from app.config import AppEnv, LLMProviderName, Settings from app.llm.factory import EgressPolicyError, get_llm_provider def _settings(env: AppEnv, provider: LLMProviderName) -> Settings: return Settings(aiaudit_env=env, llm_provider=provider, dashscope_api_key="x") def test_prod_blocks_public_dashscope(): s = _settings(AppEnv.prod, LLMProviderName.dashscope) with pytest.raises(EgressPolicyError): get_llm_provider(s) def test_prod_allows_local_vllm(): s = _settings(AppEnv.prod, LLMProviderName.vllm) provider = get_llm_provider(s) assert provider.name == "vllm" assert provider.egress is False def test_dev_allows_dashscope(): s = _settings(AppEnv.dev, LLMProviderName.dashscope) provider = get_llm_provider(s) assert provider.name == "dashscope" assert provider.egress is True def test_validate_egress_policy_raises_in_prod(): s = _settings(AppEnv.prod, LLMProviderName.dashscope) with pytest.raises(RuntimeError): s.validate_egress_policy() def test_validate_egress_policy_ok_in_dev(): s = _settings(AppEnv.dev, LLMProviderName.dashscope) # dev 下不应抛出 s.validate_egress_policy()