# retoor import time import requests from devplacepy.database import get_table, refresh_snapshot from tests.conftest import BASE_URL JSON_gateway = {"Accept": "application/json"} _counter_gateway = [0] def _db_user_gateway(name): refresh_snapshot() return get_table("users").find_one(username=name) def _unique_gateway(prefix="gw"): _counter_gateway[0] += 1 return f"{prefix}{int(time.time() * 1000)}{_counter_gateway[0]}" def admin_session(seeded_db): session = requests.Session() session.headers.update( {"X-API-KEY": _db_user_gateway("alice_test")["api_key"], **JSON_gateway} ) return session def member_key(): name = _unique_gateway("gwmem") requests.post( f"{BASE_URL}/auth/signup", data={ "username": name, "email": f"{name}@t.dev", "password": "secret123", "confirm_password": "secret123", "birth_date": "1990-01-01", "accept_terms": "1", }, allow_redirects=True, ) return _db_user_gateway(name)["api_key"] def test_gateway_page_requires_admin(seeded_db): assert ( requests.get( f"{BASE_URL}/admin/gateway", headers=JSON_gateway, allow_redirects=False ).status_code == 401 ) key = member_key() assert ( requests.get( f"{BASE_URL}/admin/gateway", headers={**JSON_gateway, "X-API-KEY": key}, allow_redirects=False, ).status_code == 403 ) def test_gateway_page_renders_for_admin(seeded_db): admin = admin_session(seeded_db) response = admin.get(f"{BASE_URL}/admin/gateway", headers={"Accept": "text/html"}) assert response.status_code == 200 assert "Gateway routing" in response.text def test_gateway_page_tabs_default_and_select_content(seeded_db): admin = admin_session(seeded_db) default_page = admin.get(f"{BASE_URL}/admin/gateway", headers={"Accept": "text/html"}) assert "Model routes" in default_page.text assert "GatewayAdmin" not in default_page.text providers_page = admin.get(f"{BASE_URL}/admin/gateway?tab=providers", headers={"Accept": "text/html"}) assert "Providers" in providers_page.text assert "Model routes" not in providers_page.text quota_page = admin.get(f"{BASE_URL}/admin/gateway?tab=quota", headers={"Accept": "text/html"}) assert "Quota rules" in quota_page.text assert "Model routes" not in quota_page.text unknown_tab_page = admin.get(f"{BASE_URL}/admin/gateway?tab=bogus", headers={"Accept": "text/html"}) assert "Model routes" in unknown_tab_page.text def test_gateway_page_json_reports_active_tab(seeded_db): admin = admin_session(seeded_db) response = admin.get(f"{BASE_URL}/admin/gateway?tab=providers") assert response.status_code == 200 assert response.json()["tab"] == "providers"