""" 消息处理器测试 """ import pytest from unittest.mock import Mock, patch from app.services.message_processor import MessageProcessor class TestMessageProcessor: """消息处理器测试类""" def setup_method(self): """测试前准备""" self.processor = MessageProcessor() def test_is_valid_group_message_success(self): """测试有效群聊消息验证""" callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.is_valid_group_message(callback_data) assert result is True def test_is_valid_group_message_wrong_type(self): """测试错误消息类型""" callback_data = { "messageType": "80002", # 非群聊消息 "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.is_valid_group_message(callback_data) assert result is False def test_is_valid_group_message_self_sent(self): """测试自己发送的消息""" callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": True # 自己发送的消息 } } result = self.processor.is_valid_group_message(callback_data) assert result is False def test_is_valid_group_message_missing_fields(self): """测试缺少必要字段""" callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", # 缺少 fromGroup 和 content "self": False } } result = self.processor.is_valid_group_message(callback_data) assert result is False @patch('app.services.message_processor.friend_ignore_service') def test_is_valid_group_message_friend_ignored(self, mock_friend_ignore_service): """测试好友在忽略列表中的消息""" mock_friend_ignore_service.is_friend_ignored.return_value = True callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.is_valid_group_message(callback_data) assert result is False mock_friend_ignore_service.is_friend_ignored.assert_called_once_with("wxid_test123") @patch('app.services.message_processor.friend_ignore_service') def test_is_valid_group_message_friend_not_ignored(self, mock_friend_ignore_service): """测试好友不在忽略列表中的消息""" mock_friend_ignore_service.is_friend_ignored.return_value = False callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.is_valid_group_message(callback_data) assert result is True mock_friend_ignore_service.is_friend_ignored.assert_called_once_with("wxid_test123") @patch('app.services.message_processor.redis_queue') def test_enqueue_callback_message_success(self, mock_redis_queue): """测试消息入队成功""" mock_redis_queue.enqueue_message.return_value = True callback_data = { "messageType": "80001", "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.enqueue_callback_message(callback_data) assert result is True mock_redis_queue.enqueue_message.assert_called_once_with("wxid_test123", callback_data) @patch('app.services.message_processor.redis_queue') def test_enqueue_callback_message_invalid(self, mock_redis_queue): """测试无效消息入队""" callback_data = { "messageType": "80002", # 无效消息类型 "data": { "fromUser": "wxid_test123", "fromGroup": "group123@chatroom", "content": "测试消息", "self": False } } result = self.processor.enqueue_callback_message(callback_data) assert result is False mock_redis_queue.enqueue_message.assert_not_called() if __name__ == "__main__": pytest.main([__file__])