Files
odysseus/tests/test_selected_endpoint_header_hydration.py
T

69 lines
1.9 KiB
Python

from types import SimpleNamespace
from routes.chat_routes import _reconcile_selected_route_from_request
class _Query:
def __init__(self, endpoint):
self.endpoint = endpoint
def filter(self, *args):
return self
def first(self):
return self.endpoint
class _Db:
def __init__(self, endpoint, session_row):
self.endpoint = endpoint
self.session_row = session_row
def query(self, model):
if getattr(model, "__name__", "") == "ModelEndpoint":
return _Query(self.endpoint)
return _Query(self.session_row)
def commit(self):
pass
def close(self):
pass
def test_selected_endpoint_hydrates_headers_when_model_and_url_match(monkeypatch):
endpoint = SimpleNamespace(
id="endpoint-1",
is_enabled=True,
base_url="https://openrouter.ai/api/v1",
api_key="secret-key",
owner="alice",
)
session_row = SimpleNamespace(
model="moonshotai/kimi-k3",
endpoint_url="https://openrouter.ai/api/v1/chat/completions",
headers={},
updated_at=None,
)
db = _Db(endpoint, session_row)
monkeypatch.setattr("routes.chat_routes.SessionLocal", lambda: db)
monkeypatch.setattr("routes.chat_routes.owner_filter", lambda query, *args, **kwargs: query, raising=False)
sess = SimpleNamespace(
model="moonshotai/kimi-k3",
endpoint_url="https://openrouter.ai/api/v1/chat/completions",
headers={},
)
form = {
"selected_model": "moonshotai/kimi-k3",
"selected_endpoint_id": "endpoint-1",
"selected_endpoint_url": "https://openrouter.ai/api/v1",
}
changed = _reconcile_selected_route_from_request(
SimpleNamespace(), sess, "session-1", form, owner=None
)
assert changed is True
assert sess.headers.get("Authorization") == "Bearer secret-key"
assert session_row.headers == sess.headers