feat(system):优化后端

1.新增后端测试
2.增加了后端的加密
3.增加了i18n(国际化)
This commit is contained in:
2026-05-31 15:39:34 +00:00
parent affe460180
commit 99520c69d7
118 changed files with 8174 additions and 1491 deletions
+110
View File
@@ -0,0 +1,110 @@
"""``ProviderManager.add_provider`` happy path
- mock 掉具体 Provider 适配器的 ``create_provider``
- 验证内存注册表写入 + postgres_database.add_provider_db.remote 被正确调用。
"""
from __future__ import annotations
from unittest.mock import AsyncMock, MagicMock
import pytest
from kilostar.core.global_state_machine.provider_manager import ProviderManager
from kilostar.core.global_state_machine.model_provider.base_provider import Provider
@pytest.mark.asyncio
async def test_add_provider_happy_path_writes_register_and_db():
pm = ProviderManager(postgres=None)
fake_provider = Provider(
provider_title="my-openai",
provider_url="https://api.openai.com",
provider_apikey="sk-xxx",
provider_models=["gpt-4o"],
provider_type="openai",
provider_owner="alice",
)
pm.provider_mapper["openai"] = MagicMock()
pm.provider_mapper["openai"].create_provider = AsyncMock(return_value=fake_provider)
postgres = MagicMock()
postgres.add_provider_db = MagicMock()
postgres.add_provider_db.remote = AsyncMock(return_value=None)
await pm.add_provider(
provider_type="openai",
provider_title="my-openai",
provider_url="https://api.openai.com",
provider_apikey="sk-xxx",
provider_owner="alice",
postgres_database=postgres,
)
assert "my-openai" in pm.provider_register
assert pm.provider_register["my-openai"] is fake_provider
postgres.add_provider_db.remote.assert_awaited_once()
kwargs = postgres.add_provider_db.remote.await_args.kwargs
assert kwargs["provider_title"] == "my-openai"
assert kwargs["provider_apikey"] == "sk-xxx"
assert kwargs["provider_models"] == ["gpt-4o"]
@pytest.mark.asyncio
async def test_add_provider_unknown_type_returns_none(caplog):
pm = ProviderManager(postgres=None)
postgres = MagicMock()
postgres.add_provider_db = MagicMock()
postgres.add_provider_db.remote = AsyncMock()
result = await pm.add_provider(
provider_type="not_supported",
provider_title="x",
provider_url="u",
provider_apikey="k",
provider_owner="o",
postgres_database=postgres,
)
assert result is None
assert "x" not in pm.provider_register
postgres.add_provider_db.remote.assert_not_awaited()
@pytest.mark.asyncio
async def test_add_provider_network_error_raises_retryable():
"""网络异常应被包装为 RetryableError 重抛。"""
import httpx
from kilostar.utils.error import RetryableError
pm = ProviderManager(postgres=None)
pm.provider_mapper["openai"] = MagicMock()
pm.provider_mapper["openai"].create_provider = AsyncMock(
side_effect=httpx.ConnectError("network down")
)
postgres = MagicMock()
postgres.add_provider_db = MagicMock()
postgres.add_provider_db.remote = AsyncMock()
with pytest.raises(RetryableError):
await pm.add_provider(
provider_type="openai",
provider_title="x",
provider_url="u",
provider_apikey="k",
provider_owner="o",
postgres_database=postgres,
)
def test_get_provider_list_returns_internal_dict():
pm = ProviderManager(postgres=None)
pm.provider_register["a"] = "fake"
assert pm.get_provider_list()["a"] == "fake"
def test_get_provider_returns_none_when_missing():
pm = ProviderManager(postgres=None)
assert pm.get_provider("nope") is None