新增了Twitch、Telegram、Discord、Slack、Mattermost、WeChat、Zalo等多渠道的单元测试用例,覆盖了令牌处理、速率限制、消息去重、会话解析、格式转换、安全策略等模块 同时在测试配置中添加了测试用的OpenAI API密钥环境变量
114 lines
5.6 KiB
Python
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 |