hermes-agent / tests /gateway /test_api_session_preflight.py
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
108e227 verified
Raw History Blame Contribute Delete
1.73 kB
"""The browser can send the advertised continuation header only from allowed origins."""
import secrets
import pytest
from aiohttp import ClientSession
from gateway.config import PlatformConfig
from gateway.platforms.api_server import APIServerAdapter, _STATIC_FEATURE_FLAGS
@pytest.mark.asyncio
async def test_continuation_preflight_preserves_origin_allowlist():
adapter = APIServerAdapter(PlatformConfig(enabled=True, extra={
"host": "127.0.0.1", "port": 0, "key": secrets.token_hex(32),
"cors_origins": ["https://allowed.example"],
}))
assert await adapter.connect()
try:
port = adapter._site._server.sockets[0].getsockname()[1]
header = _STATIC_FEATURE_FLAGS["session_continuity_header"]
async with ClientSession() as client:
for origin, expected in [("https://allowed.example", 200), ("https://denied.example", 403)]:
async with client.options(f"http://127.0.0.1:{port}/v1/chat/completions", headers={
"Origin": origin, "Access-Control-Request-Method": "POST",
"Access-Control-Request-Headers": f"Authorization, Content-Type, {header}",
}) as response:
assert response.status == expected
if expected == 200:
allowed = {h.strip().lower() for h in response.headers["Access-Control-Allow-Headers"].split(",")}
assert header.lower() in allowed
assert response.headers["Access-Control-Allow-Origin"] == origin
else:
assert "Access-Control-Allow-Origin" not in response.headers
finally:
await adapter.disconnect()