43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from types import SimpleNamespace
|
|
|
|
from src.chat.message_receive.chat_manager import ChatManager
|
|
from src.common.utils.utils_session import SessionUtils
|
|
|
|
|
|
def test_calculate_session_id_distinguishes_account_and_scope() -> None:
|
|
base_session_id = SessionUtils.calculate_session_id("qq", user_id="42")
|
|
same_base_session_id = SessionUtils.calculate_session_id("qq", user_id="42")
|
|
account_scoped_session_id = SessionUtils.calculate_session_id("qq", user_id="42", account_id="123")
|
|
route_scoped_session_id = SessionUtils.calculate_session_id("qq", user_id="42", account_id="123", scope="main")
|
|
|
|
assert base_session_id == same_base_session_id
|
|
assert account_scoped_session_id != base_session_id
|
|
assert route_scoped_session_id != account_scoped_session_id
|
|
|
|
|
|
def test_chat_manager_register_message_uses_route_metadata() -> None:
|
|
chat_manager = ChatManager()
|
|
message = SimpleNamespace(
|
|
platform="qq",
|
|
session_id="",
|
|
message_info=SimpleNamespace(
|
|
user_info=SimpleNamespace(user_id="42"),
|
|
group_info=SimpleNamespace(group_id="1000"),
|
|
additional_config={
|
|
"platform_io_account_id": "123",
|
|
"platform_io_scope": "main",
|
|
},
|
|
),
|
|
)
|
|
|
|
chat_manager.register_message(message)
|
|
|
|
assert message.session_id == SessionUtils.calculate_session_id(
|
|
"qq",
|
|
user_id="42",
|
|
group_id="1000",
|
|
account_id="123",
|
|
scope="main",
|
|
)
|
|
assert chat_manager.last_messages[message.session_id] is message
|