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