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

61 lines
1.9 KiB
Python

from __future__ import annotations
import pytest
from yuxi.channels.adapters.slack.session import (
resolve_chat_id,
resolve_chat_type,
extract_thread_ts,
)
from yuxi.channels.models import ChatType
class TestResolveChatId:
def test_dm_channel_prefix(self):
assert resolve_chat_id("D1234567", {"user": "U001"}) == "dm_U001"
def test_im_channel_type(self):
assert resolve_chat_id("C1234567", {"channel_type": "im", "user": "U001"}) == "dm_U001"
def test_public_channel(self):
assert resolve_chat_id("C1234567", {}) == "channel_C1234567"
def test_private_channel(self):
assert resolve_chat_id("G1234567", {}) == "channel_G1234567"
def test_dm_without_user(self):
assert resolve_chat_id("D1234567", {}) == "dm_unknown"
class TestResolveChatType:
def test_dm_prefix(self):
assert resolve_chat_type("D1234567", {}) == ChatType.DIRECT
def test_im_type(self):
assert resolve_chat_type("C1234567", {"channel_type": "im"}) == ChatType.DIRECT
def test_thread(self):
assert resolve_chat_type("C1234567", {"thread_ts": "111.222", "ts": "333.444"}) == ChatType.THREAD
def test_thread_same_ts(self):
assert resolve_chat_type("C1234567", {"thread_ts": "111.222", "ts": "111.222"}) == ChatType.GROUP
def test_group_default(self):
assert resolve_chat_type("C1234567", {}) == ChatType.GROUP
def test_private_channel(self):
assert resolve_chat_type("G1234567", {}) == ChatType.GROUP
class TestExtractThreadTs:
def test_thread_message(self):
assert extract_thread_ts({"thread_ts": "111.222", "ts": "333.444"}) == "111.222"
def test_parent_message(self):
assert extract_thread_ts({"thread_ts": "111.222", "ts": "111.222"}) is None
def test_no_thread(self):
assert extract_thread_ts({"ts": "111.222"}) is None
def test_empty_event(self):
assert extract_thread_ts({}) is None