ForcePilot/test/api/test_chat_router.py
Wenjie Zhang c72e2cfb90 test: 增加路由的集成测试
- 新增多个集成测试,涵盖认证、聊天、知识库和系统路由的API端点
- 更新测试环境变量配置,确保测试凭据的灵活性
- 移除冗余的测试文件,优化测试结构
2025-10-11 01:07:45 +08:00

60 lines
2.1 KiB
Python

"""
Integration tests for chat router endpoints.
"""
from __future__ import annotations
import pytest
pytestmark = [pytest.mark.asyncio, pytest.mark.integration]
async def test_chat_endpoints_require_authentication(test_client):
assert (await test_client.get("/api/chat/default_agent")).status_code == 401
assert (await test_client.get("/api/chat/agent")).status_code == 401
async def test_admin_can_list_agents(test_client, admin_headers):
response = await test_client.get("/api/chat/agent", headers=admin_headers)
assert response.status_code == 200, response.text
payload = response.json()
assert isinstance(payload["agents"], list)
assert "metadata" in payload
async def test_admin_can_read_default_agent(test_client, admin_headers):
response = await test_client.get("/api/chat/default_agent", headers=admin_headers)
assert response.status_code == 200, response.text
assert "default_agent_id" in response.json()
async def test_setting_default_agent_requires_admin(test_client, admin_headers, standard_user):
# Attempt as admin first to obtain a candidate agent id.
agents_response = await test_client.get("/api/chat/agent", headers=admin_headers)
assert agents_response.status_code == 200, agents_response.text
agents = agents_response.json().get("agents", [])
if not agents:
pytest.skip("No agents are registered in the system.")
candidate_agent_id = agents[0].get("id")
if not candidate_agent_id:
pytest.skip("Agent payload missing id field.")
# Normal user should not be able to update the default agent.
forbidden_response = await test_client.post(
"/api/chat/set_default_agent",
json={"agent_id": candidate_agent_id},
headers=standard_user["headers"],
)
assert forbidden_response.status_code == 403
# Admin should succeed.
update_response = await test_client.post(
"/api/chat/set_default_agent",
json={"agent_id": candidate_agent_id},
headers=admin_headers,
)
assert update_response.status_code == 200, update_response.text
assert update_response.json()["default_agent_id"] == candidate_agent_id