import pytest from app.core.config import Settings from app.ports.model_providers import ModelProviderError, ProviderErrorKind from app.tools import provider_smoke from app.tools.provider_smoke import ProbeResult, failed_probe def test_provider_smoke_settings_accept_compose_embedding_dimension( monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("EMBEDDING_DIMENSION", "1024") settings = Settings(_env_file=None) assert settings.embedding_dimension == 1024 async def test_provider_smoke_entrypoint_accepts_compose_embedding_dimension( monkeypatch: pytest.MonkeyPatch, ) -> None: workspace_host = "workspace-test.cn-beijing.maas.aliyuncs.com" monkeypatch.setenv("EMBEDDING_DIMENSION", "1024") monkeypatch.setenv( "BAILIAN_OPENAI_BASE_URL", f"https://{workspace_host}/compatible-mode/v1", ) monkeypatch.setenv( "BAILIAN_RERANK_BASE_URL", f"https://{workspace_host}/compatible-api/v1", ) observed_dimensions: list[int] = [] def fake_api_key(settings: Settings) -> str: observed_dimensions.append(settings.embedding_dimension) return "test-only-api-key" async def successful_probe(settings: Settings, api_key: str) -> ProbeResult: observed_dimensions.append(settings.embedding_dimension) assert api_key == "test-only-api-key" return ProbeResult(capability="test", status="ok") monkeypatch.setattr(Settings, "bailian_api_key", fake_api_key) monkeypatch.setattr(provider_smoke, "probe_embedding", successful_probe) monkeypatch.setattr(provider_smoke, "probe_rerank", successful_probe) monkeypatch.setattr(provider_smoke, "probe_chat", successful_probe) exit_code = await provider_smoke.async_main() assert exit_code == 0 assert observed_dimensions == [1024, 1024, 1024, 1024] def test_failed_probe_only_exposes_sanitized_provider_fields() -> None: error = ModelProviderError( operation="embedding.create", kind=ProviderErrorKind.AUTHENTICATION, status_code=401, provider_code="invalid_api_key", request_id="req-safe-1", ) result = failed_probe("embedding", error) assert result.error_kind == "authentication" assert result.status_code == 401 assert result.request_id == "req-safe-1" assert "invalid_api_key" not in repr(result) def test_unexpected_error_is_reduced_to_fixed_category() -> None: result = failed_probe("chat", RuntimeError("sensitive content")) assert result.error_kind == "internal_contract_error" assert "sensitive content" not in repr(result)