39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
import pytest
|
|
import requests
|
|
|
|
|
|
@pytest.mark.integration
|
|
def test_router_api_key_enforcement(router_manager, mock_workers):
|
|
# Start backend requiring API key; router should forward Authorization header transparently
|
|
_, urls, _ = mock_workers(
|
|
n=1, args=["--require-api-key", "--api-key", "correct_api_key"]
|
|
)
|
|
rh = router_manager.start_router(
|
|
worker_urls=urls,
|
|
policy="round_robin",
|
|
extra={},
|
|
)
|
|
|
|
# No auth -> 401
|
|
r = requests.post(
|
|
f"{rh.url}/v1/completions",
|
|
json={"model": "test-model", "prompt": "x", "max_tokens": 1, "stream": False},
|
|
)
|
|
assert r.status_code == 401
|
|
|
|
# Invalid auth -> 401
|
|
r = requests.post(
|
|
f"{rh.url}/v1/completions",
|
|
json={"model": "test-model", "prompt": "x", "max_tokens": 1, "stream": False},
|
|
headers={"Authorization": "Bearer wrong"},
|
|
)
|
|
assert r.status_code == 401
|
|
|
|
# Correct auth -> 200
|
|
r = requests.post(
|
|
f"{rh.url}/v1/completions",
|
|
json={"model": "test-model", "prompt": "x", "max_tokens": 1, "stream": False},
|
|
headers={"Authorization": "Bearer correct_api_key"},
|
|
)
|
|
assert r.status_code == 200
|