Files
2026-07-13 13:12:33 +08:00

82 lines
2.9 KiB
Python

"""Regression tests for the version + provider readouts in gateway status surfaces.
Pins two fixes:
* The displayed version derives from installed package metadata
(``importlib.metadata``) rather than a hardcoded literal that silently
goes stale — it had been frozen at ``"0.1.0"`` across config, the status
RPC, and gateway identity while the package was at 0.2.1.
* The provider readout reports the *configured* provider id (e.g.
``"openrouter"``), not the OpenAI-compatible backend class that physically
serves it. OpenRouter/DeepSeek/Gemini all run through ``OpenAIProvider``,
so introspecting the instance used to mislabel them as ``"openai"``.
"""
from __future__ import annotations
from importlib.metadata import version as _pkg_version
from types import SimpleNamespace
import pytest
import opensquilla
from opensquilla.gateway.rpc.registry import RpcContext, _gateway_identity_get, _status
from opensquilla.provider.selector import ModelSelector, ProviderConfig, SelectorConfig
def _ctx(**kwargs: object) -> RpcContext:
return RpcContext(conn_id="c", principal=SimpleNamespace(role="operator"), **kwargs)
def _openrouter_selector() -> ModelSelector:
return ModelSelector(
SelectorConfig(
primary=ProviderConfig(
provider="openrouter",
model="deepseek/deepseek-v4-flash",
api_key="test-key",
)
)
)
def test_package_version_tracks_metadata_not_stale_literal() -> None:
assert opensquilla.__version__ == _pkg_version("opensquilla")
assert opensquilla.__version__ != "0.1.0"
def test_active_provider_id_reports_configured_id() -> None:
assert _openrouter_selector().active_provider_id == "openrouter"
def test_active_provider_id_follows_failover() -> None:
sel = ModelSelector(
SelectorConfig(
primary=ProviderConfig(provider="openrouter", model="m"),
fallbacks=[ProviderConfig(provider="anthropic", model="claude")],
)
)
assert sel.active_provider_id == "openrouter"
sel.next_fallback()
assert sel.active_provider_id == "anthropic"
@pytest.mark.asyncio
async def test_status_rpc_reports_metadata_version_and_configured_provider() -> None:
result = await _status(None, _ctx(provider_selector=_openrouter_selector()))
assert result["version"] == opensquilla.__version__
# Configured id surfaced — NOT the "OpenAIProvider" backend class / "openai".
assert result["provider"] == "openrouter"
@pytest.mark.asyncio
async def test_status_rpc_provider_is_none_without_selector() -> None:
result = await _status(None, _ctx(provider_selector=None))
assert result["provider"] is None
assert result["version"] == opensquilla.__version__
@pytest.mark.asyncio
async def test_gateway_identity_reports_metadata_version() -> None:
result = await _gateway_identity_get(None, _ctx())
assert result["version"] == opensquilla.__version__