"""
Integration tests for Render API in LowLevel mode via mcp-openapi-proxy.
Needs RENDER_API_KEY in .env to run.
"""
import os
import pytest
from mcp_openapi_proxy.server_lowlevel import fetch_openapi_spec, tools, openapi_spec_data
from mcp_openapi_proxy.handlers import register_functions
from mcp_openapi_proxy.utils import setup_logging
@pytest.fixture
def reset_env_and_module():
"""Fixture to reset environment and module state."""
original_env = os.environ.copy()
yield "OPENAPI_SPEC_URL_" + hex(id(reset_env_and_module))[-8:]
os.environ.clear()
os.environ.update(original_env)
global tools, openapi_spec_data
tools = []
openapi_spec_data = None
@pytest.mark.asyncio
async def test_render_services_list_lowlevel(reset_env_and_module):
"""Test Render /services endpoint in LowLevel mode with RENDER_API_KEY."""
pytest.skip("Skipping Render test due to unsupported method parameters—fix later, ya grub!")
env_key = reset_env_and_module
render_api_key = os.getenv("RENDER_API_KEY")
spec_url = os.getenv("RENDER_SPEC_URL", "https://api-docs.render.com/openapi/6140fb3daeae351056086186")
tool_prefix = os.getenv("TOOL_NAME_PREFIX", "render_")
print(f"🍺 DEBUG: RENDER_API_KEY: {render_api_key if render_api_key else 'Not set'}")
if not render_api_key or "your-" in render_api_key:
print("🍻 DEBUG: Skipping due to missing or placeholder RENDER_API_KEY")
pytest.skip("RENDER_API_KEY missing or placeholder—set it in .env!")
# Set up environment
os.environ[env_key] = spec_url
os.environ["API_KEY"] = render_api_key
os.environ["API_AUTH_TYPE"] = "Bearer"
os.environ["TOOL_NAME_PREFIX"] = tool_prefix
os.environ["TOOL_WHITELIST"] = "/services,/deployments"
os.environ["DEBUG"] = "true"
print(f"🍍 DEBUG: API_KEY set to: {os.environ['API_KEY'][:5]}...")
# Fetch and register spec
global openapi_spec_data
logger = setup_logging(debug=True)
print(f"🍆 DEBUG: Fetching spec from {spec_url}")
openapi_spec_data = fetch_openapi_spec(spec_url)
assert openapi_spec_data, f"Failed to fetch spec from {spec_url}"
assert "paths" in openapi_spec_data, "No 'paths' key in spec"
assert "/services" in openapi_spec_data["paths"], "No /services endpoint in spec"
assert "servers" in openapi_spec_data or "host" in openapi_spec_data, "No servers or host defined in spec"
registered_tools = register_functions(openapi_spec_data)
assert registered_tools, "No tools registered from spec!"
assert any(tool.name == "render_get_services" for tool in registered_tools), "render_get_services tool not found!"