fix(api): keep a pooled remote session to the api key that opened it

The pool key now includes the caller's API key and client_region, so a hit never skips the server_proxy and region checks that a fresh session runs.
This commit is contained in:
imSp4rky
2026-11-01 19:47:19 -07:00
parent 2bbb2d65b8
commit e509db618e
3 changed files with 40 additions and 8 deletions
+22 -2
View File
@@ -1,6 +1,7 @@
import asyncio
import json
import time
from types import SimpleNamespace
import pytest
@@ -43,8 +44,8 @@ def pool(monkeypatch):
return logins
def lease(data, **extra):
return handlers.lease_remote_service({**data, **extra}, "srv", INFO, None, "show")
def lease(data, request=None, **extra):
return handlers.lease_remote_service({**data, **extra}, "srv", INFO, None, "show", request)
DATA = {"service": "EXAMPLE", "title_id": "show", "remote": "srv"}
@@ -81,6 +82,25 @@ async def test_only_options_that_reach_the_remote_split_the_pool(pool):
assert a.service is c.service
def keyed(key):
return SimpleNamespace(headers={"X-Secret-Key": key})
async def test_each_api_key_gets_its_own_pooled_session(pool):
a = await lease(DATA, keyed("a"), proxy="us")
again = await lease(DATA, keyed("a"), proxy="us")
b = await lease(DATA, keyed("b"), proxy="us")
assert a.service is again.service
assert b.service is not a.service
assert pool == ["show", "show"]
async def test_client_region_splits_the_pool(pool):
us = await lease(DATA, client_region="us")
gb = await lease(DATA, client_region="gb")
assert us.service is not gb.service
@pytest.fixture
def remote_config(monkeypatch):
monkeypatch.setattr(config, "remote_services", {"srv": {"url": "https://srv", "api_key": "k"}})