43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""数据零出域红线测试: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()
|