53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
"""Integration tests for session token proxy."""
|
|
|
|
import os
|
|
import pytest
|
|
import httpx
|
|
|
|
|
|
GRIST_MCP_URL = os.environ.get("GRIST_MCP_URL", "http://localhost:3000")
|
|
GRIST_MCP_TOKEN = os.environ.get("GRIST_MCP_TOKEN")
|
|
|
|
|
|
@pytest.fixture
|
|
def mcp_client():
|
|
"""Client for MCP SSE endpoint."""
|
|
return httpx.Client(
|
|
base_url=GRIST_MCP_URL,
|
|
headers={"Authorization": f"Bearer {GRIST_MCP_TOKEN}"},
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def proxy_client():
|
|
"""Client for proxy endpoint (session token set per-test)."""
|
|
return httpx.Client(base_url=GRIST_MCP_URL)
|
|
|
|
|
|
@pytest.mark.integration
|
|
def test_full_session_proxy_flow(mcp_client, proxy_client):
|
|
"""Test: request token via MCP, use token to call proxy."""
|
|
# This test requires a running grist-mcp server with proper config
|
|
# Skip if not configured
|
|
if not GRIST_MCP_TOKEN:
|
|
pytest.skip("GRIST_MCP_TOKEN not set")
|
|
|
|
# Step 1: Request session token (would be via MCP in real usage)
|
|
# For integration test, we test the proxy endpoint directly
|
|
# This is a placeholder - full MCP integration would use SSE
|
|
|
|
# Step 2: Use proxy endpoint
|
|
# Note: Need a valid session token to test this fully
|
|
# For now, verify endpoint exists and rejects bad tokens
|
|
|
|
response = proxy_client.post(
|
|
"/api/v1/proxy",
|
|
headers={"Authorization": "Bearer invalid_token"},
|
|
json={"method": "list_tables"},
|
|
)
|
|
|
|
assert response.status_code == 401
|
|
data = response.json()
|
|
assert data["success"] is False
|
|
assert data["code"] in ["INVALID_TOKEN", "TOKEN_EXPIRED"]
|