53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
"""内置平台适配器测试。"""
|
|
|
|
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"
|