yj
2025-07-23 1225b6cbf0a028b765a0ab6d784bcb80459a67bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"""
消息处理器测试
"""
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.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__])