mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-13 03:32:21 +02:00
69 lines
1.9 KiB
Python
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
|