"""内置平台适配器测试。""" import pytest from app.expr import ExprError from app.providers import get_provider, list_providers from app.providers.deepseek import DeepSeekProvider DEEPSEEK_RESPONSE = { "is_available": True, "balance_infos": [ { "currency": "CNY", "total_balance": "1.34", "granted_balance": "0.00", "topped_up_balance": "1.34", } ], } class TestDeepSeek: def test_build_request(self): prov = DeepSeekProvider() url, headers, body = prov.build_request("sk-abc") assert url == "https://api.deepseek.com/user/balance" assert headers["Authorization"] == "Bearer sk-abc" assert body is None assert prov.method == "GET" def test_extract_balance(self): assert DeepSeekProvider().extract_balance(DEEPSEEK_RESPONSE) == 1.34 def test_extract_missing(self): with pytest.raises(ExprError): DeepSeekProvider().extract_balance({"is_available": False}) class TestRegistry: def test_get_provider(self): prov = get_provider("deepseek") assert isinstance(prov, DeepSeekProvider) def test_unknown_provider_none(self): assert get_provider("nope") is None def test_list_providers(self): provs = list_providers() ids = [p["id"] for p in provs] assert "deepseek" in ids dp = next(p for p in provs if p["id"] == "deepseek") assert dp["name"] == "DeepSeek" and dp["currency"] == "CNY" and dp["icon"] == "DeepSeek"