ForcePilot/backend/test/unit/channels/test_message_actions_v2.py
Kris 3264900bc9 test: 新增多渠道单元测试用例并配置测试环境变量
新增了Twitch、Telegram、Discord、Slack、Mattermost、WeChat、Zalo等多渠道的单元测试用例,覆盖了令牌处理、速率限制、消息去重、会话解析、格式转换、安全策略等模块
同时在测试配置中添加了测试用的OpenAI API密钥环境变量
2026-05-12 00:56:47 +08:00

114 lines
5.6 KiB
Python

from __future__ import annotations
from yuxi.channels.adapters.telegram.message_actions import TELEGRAM_MESSAGE_ACTIONS
from yuxi.channels.adapters.discord.message_actions import DISCORD_MESSAGE_ACTIONS
from yuxi.channels.adapters.slack.message_actions import SLACK_MESSAGE_ACTIONS
from yuxi.channels.adapters.whatsapp.message_actions import WHATSAPP_MESSAGE_ACTIONS
from yuxi.channels.adapters.feishu.message_actions import FEISHU_MESSAGE_ACTIONS
class TestMessageActionsSchema:
def test_telegram_actions_have_required_fields(self):
assert len(TELEGRAM_MESSAGE_ACTIONS) >= 20
for action_name, action_info in TELEGRAM_MESSAGE_ACTIONS.items():
assert "status" in action_info, f"Missing status in {action_name}"
assert action_info["status"] in ("implemented", "planned", "unsupported"), \
f"Invalid status '{action_info['status']}' in {action_name}"
assert "description" in action_info, f"Missing description in {action_name}"
assert "api" in action_info, f"Missing api in {action_name}"
def test_telegram_implemented_actions_exist(self):
implemented = [k for k, v in TELEGRAM_MESSAGE_ACTIONS.items() if v["status"] == "implemented"]
assert "send" in implemented
assert "edit" in implemented
assert "delete" in implemented
assert "react" in implemented
assert "typing" in implemented
def test_discord_actions_have_required_fields(self):
assert len(DISCORD_MESSAGE_ACTIONS) >= 20
for action_name, action_info in DISCORD_MESSAGE_ACTIONS.items():
assert "status" in action_info, f"Missing status in {action_name}"
assert action_info["status"] in ("implemented", "planned", "unsupported"), \
f"Invalid status '{action_info['status']}' in {action_name}"
assert "description" in action_info
assert "api" in action_info
def test_discord_implemented_actions_exist(self):
implemented = [k for k, v in DISCORD_MESSAGE_ACTIONS.items() if v["status"] == "implemented"]
assert "send" in implemented
assert "edit" in implemented
assert "delete" in implemented
assert "react" in implemented
def test_slack_actions_have_required_fields(self):
assert len(SLACK_MESSAGE_ACTIONS) >= 20
for action_name, action_info in SLACK_MESSAGE_ACTIONS.items():
assert "status" in action_info, f"Missing status in {action_name}"
assert action_info["status"] in ("implemented", "planned", "unsupported"), \
f"Invalid status '{action_info['status']}' in {action_name}"
assert "description" in action_info
assert "api" in action_info
def test_slack_implemented_actions_exist(self):
implemented = [k for k, v in SLACK_MESSAGE_ACTIONS.items() if v["status"] == "implemented"]
assert "send" in implemented
assert "edit" in implemented
assert "delete" in implemented
assert "sendEphemeral" in implemented
def test_all_three_channels_exist(self):
assert len(TELEGRAM_MESSAGE_ACTIONS) > 0
assert len(DISCORD_MESSAGE_ACTIONS) > 0
assert len(SLACK_MESSAGE_ACTIONS) > 0
class TestWhatsAppActions:
def test_whatsapp_actions_have_required_fields(self):
assert len(WHATSAPP_MESSAGE_ACTIONS) >= 15
for action_name, action_info in WHATSAPP_MESSAGE_ACTIONS.items():
assert "status" in action_info, f"Missing status in {action_name}"
assert action_info["status"] in ("implemented", "planned", "unsupported"), \
f"Invalid status '{action_info['status']}' in {action_name}"
assert "description" in action_info, f"Missing description in {action_name}"
assert "api" in action_info, f"Missing api in {action_name}"
def test_whatsapp_implemented_actions_exist(self):
implemented = [k for k, v in WHATSAPP_MESSAGE_ACTIONS.items() if v["status"] == "implemented"]
assert "send" in implemented
assert "sendAttachment" in implemented
assert "react" in implemented
assert "downloadFile" in implemented
assert "uploadFile" in implemented
class TestFeishuActions:
def test_feishu_actions_have_required_fields(self):
assert len(FEISHU_MESSAGE_ACTIONS) >= 20
for action_name, action_info in FEISHU_MESSAGE_ACTIONS.items():
assert "status" in action_info, f"Missing status in {action_name}"
assert action_info["status"] in ("implemented", "planned", "unsupported"), \
f"Invalid status '{action_info['status']}' in {action_name}"
assert "description" in action_info, f"Missing description in {action_name}"
assert "api" in action_info, f"Missing api in {action_name}"
def test_feishu_implemented_actions_exist(self):
implemented = [k for k, v in FEISHU_MESSAGE_ACTIONS.items() if v["status"] == "implemented"]
assert "send" in implemented
assert "edit" in implemented
assert "delete" in implemented
assert "react" in implemented
assert "pin" in implemented
assert "unpin" in implemented
assert "listPins" in implemented
assert "read" in implemented
assert "listReactions" in implemented
assert "channelInfo" in implemented
assert "channelList" in implemented
def test_all_five_channels_exist(self):
assert len(TELEGRAM_MESSAGE_ACTIONS) > 0
assert len(DISCORD_MESSAGE_ACTIONS) > 0
assert len(SLACK_MESSAGE_ACTIONS) > 0
assert len(WHATSAPP_MESSAGE_ACTIONS) > 0
assert len(FEISHU_MESSAGE_ACTIONS) > 0