no message
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
"""
|
||||
接口验证: 社区私聊 v1
|
||||
路径:
|
||||
- GET /api/chat/sessions
|
||||
- POST /api/chat/open
|
||||
- GET /api/chat/messages
|
||||
- POST /api/chat/send
|
||||
|
||||
运行前请通过环境变量提供两个已登录用户 token:
|
||||
PRIVATE_CHAT_TOKEN_A、PRIVATE_CHAT_TOKEN_B。
|
||||
"""
|
||||
import os
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
BASE_URL = os.getenv("BASE_URL", "http://127.0.0.1:8000")
|
||||
TOKEN_A = os.getenv("PRIVATE_CHAT_TOKEN_A", "")
|
||||
TOKEN_B = os.getenv("PRIVATE_CHAT_TOKEN_B", "")
|
||||
TARGET_USER_ID = int(os.getenv("PRIVATE_CHAT_TARGET_USER_ID", "0"))
|
||||
|
||||
|
||||
def assert_api_ok(resp):
|
||||
assert resp.status_code == 200, resp.text
|
||||
data = resp.json()
|
||||
assert data["code"] == 1, data
|
||||
return data["data"]
|
||||
|
||||
|
||||
def require_env():
|
||||
assert TOKEN_A, "请设置 PRIVATE_CHAT_TOKEN_A"
|
||||
assert TOKEN_B, "请设置 PRIVATE_CHAT_TOKEN_B"
|
||||
assert TARGET_USER_ID > 0, "请设置 PRIVATE_CHAT_TARGET_USER_ID"
|
||||
|
||||
|
||||
def test_private_chat_flow():
|
||||
require_env()
|
||||
|
||||
headers_a = {"token": TOKEN_A}
|
||||
headers_b = {"token": TOKEN_B}
|
||||
|
||||
session = assert_api_ok(
|
||||
requests.post(
|
||||
f"{BASE_URL}/api/chat/open",
|
||||
json={"target_user_id": TARGET_USER_ID},
|
||||
headers=headers_a,
|
||||
timeout=10,
|
||||
)
|
||||
)
|
||||
assert session["target_user"]["id"] == TARGET_USER_ID
|
||||
assert "is_mutual" in session["relationship"]
|
||||
assert "relationship_text" in session["relationship"]
|
||||
|
||||
message = assert_api_ok(
|
||||
requests.post(
|
||||
f"{BASE_URL}/api/chat/send",
|
||||
json={
|
||||
"session_id": session["id"],
|
||||
"message_type": "text",
|
||||
"content": "私聊接口冒烟测试",
|
||||
},
|
||||
headers=headers_a,
|
||||
timeout=10,
|
||||
)
|
||||
)
|
||||
assert message["message_type"] == "text"
|
||||
assert message["content"] == "私聊接口冒烟测试"
|
||||
|
||||
messages = assert_api_ok(
|
||||
requests.get(
|
||||
f"{BASE_URL}/api/chat/messages",
|
||||
params={"session_id": session["id"], "after_id": 0},
|
||||
headers=headers_b,
|
||||
timeout=10,
|
||||
)
|
||||
)
|
||||
assert any(item["id"] == message["id"] for item in messages["lists"])
|
||||
|
||||
image_message = assert_api_ok(
|
||||
requests.post(
|
||||
f"{BASE_URL}/api/chat/send",
|
||||
json={
|
||||
"session_id": session["id"],
|
||||
"message_type": "image",
|
||||
"content": "/uploads/private-chat-test.png",
|
||||
},
|
||||
headers=headers_a,
|
||||
timeout=10,
|
||||
)
|
||||
)
|
||||
assert image_message["message_type"] == "image"
|
||||
|
||||
sessions = assert_api_ok(
|
||||
requests.get(f"{BASE_URL}/api/chat/sessions", headers=headers_a, timeout=10)
|
||||
)
|
||||
assert any(item["id"] == session["id"] for item in sessions["lists"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_private_chat_flow()
|
||||
print("私聊接口冒烟通过")
|
||||
Reference in New Issue
Block a user