"""平台API路由测试 - 验证不存在双重前缀问题""" import pytest import pytest_asyncio from httpx import AsyncClient, ASGITransport from app.main import app class TestPlatformsRoutePrefix: """平台路由前缀测试""" @pytest.mark.asyncio async def test_platforms_endpoint_not_double_prefixed(self): """ 验证platforms端点路径不是 /api/v1/api/* 预期: - /api/v1/api/platforms/health 应该返回404(不存在) - /api/v1/platforms/health 应该返回200(正确路径) """ transport = ASGITransport(app=app) async with AsyncClient(transport=transport, base_url="http://test") as client: wrong_path_response = await client.get("/api/v1/api/platforms/health") correct_path_response = await client.get("/api/v1/platforms/health") assert wrong_path_response.status_code == 404, \ f"错误:/api/v1/api/platforms/health 返回 {wrong_path_response.status_code},应该是404(说明存在双重前缀问题)" assert correct_path_response.status_code == 200, \ f"错误:/api/v1/platforms/health 返回 {correct_path_response.status_code},应该是200(端点不可用)" @pytest.mark.asyncio async def test_platforms_health_endpoint_accessible(self): """验证platforms健康检查端点可通过正确路径访问""" transport = ASGITransport(app=app) async with AsyncClient(transport=transport, base_url="http://test") as client: response = await client.get("/api/v1/platforms/health") assert response.status_code == 200, \ f"平台健康检查端点无法访问,状态码: {response.status_code}" data = response.json() assert "platforms" in data assert "total" in data assert "configured_count" in data @pytest.mark.asyncio async def test_platforms_health_by_name_endpoint(self): """验证platforms按名称健康检查端点可通过正确路径访问""" transport = ASGITransport(app=app) async with AsyncClient(transport=transport, base_url="http://test") as client: response = await client.get("/api/v1/platforms/health/kimi") assert response.status_code == 200, \ f"平台按名称健康检查端点无法访问,状态码: {response.status_code}" data = response.json() assert "name" in data assert data["name"] == "kimi"