Ejemplo n.º 1
0
    def test_verify_OK(self):
        """
        测试是否能够正确完成接口验证
        @return: None
        """
        echo_str = ('JJbZng5xDFUaE4UhtGVct3ksIzuIeh2Hik4Jf%2BHtuJPppSyv7'
                    'gaNY%2FplvblHZRe1JVMv3XGj9fST8ppx62lArQ%3D%3D')
        param_dict = {
            'msg_signature': 'fa5e779b1eeb709358f9742db4704ff932754a45',
            'timestamp': '1450093931',
            'nonce': '112775',
            'echostr': urllib.unquote(echo_str),
        }
        with mock.patch('flask.request') as mock_request:
            type(mock_request).method = mock.PropertyMock(return_value='GET')
            type(mock_request).args = mock.PropertyMock(
                return_value=param_dict)
            type(mock_request).data = mock.PropertyMock(return_value='')
            config = utils.get_config('config_test.ini')
            token = '8wdYqOgJWQlFRE13FaBAUOU2FxXVtGr'
            aes_key = config.get('demo', 'encoding_aes_key')
            corp_id = config.get('demo', 'corpid')

            server = easy_wechat.WeChatServer('demo', 'config_test.ini')
            server.wxcpt = utils.WXBizMsgCrypt(token, aes_key, corp_id)
            self.assertIsInstance(server.callback(), str)
Ejemplo n.º 2
0
 def test_callback(self):
     """
     测试回调是否正常工作
     @return: None
     """
     with mock.patch('flask.request') as mock_request:
         type(mock_request).method = mock.PropertyMock(return_value='F**K')
         server = easy_wechat.WeChatServer('demo', 'config_test.ini')
         self.assertRaises(http_exceptions.MethodNotAllowed,
                           server.callback)
Ejemplo n.º 3
0
 def test_receive_msg_err(self):
     """
     测试接收消息时参数错误是否抛出异常
     @return: None
     """
     param_dict = {
         'msg_signature': '',
         'timestamp': '',
         'nonce': '',
     }
     with mock.patch('flask.request') as mock_request:
         type(mock_request).method = mock.PropertyMock(return_value='POST')
         type(mock_request).args = mock.PropertyMock(
             return_value=param_dict)
         type(mock_request).data = mock.PropertyMock(return_value='')
         server = easy_wechat.WeChatServer('demo', 'config_test.ini')
         self.assertRaises(http_exceptions.BadRequest, server.callback)
Ejemplo n.º 4
0
 def test_verify_err(self):
     """
     测试微信接口验证功能是否能够正确报错
     @return: None
     """
     param_dict = {
         'msg_signature': '',
         'timestamp': 0,
         'nonce': '',
         'echostr': '123',
     }
     with mock.patch('flask.request') as mock_request:
         type(mock_request).method = mock.PropertyMock(return_value='GET')
         type(mock_request).args = mock.PropertyMock(
             return_value=param_dict)
         type(mock_request).data = mock.PropertyMock(return_value='')
         server = easy_wechat.WeChatServer('demo', 'config_test.ini')
         self.assertRaises(http_exceptions.Forbidden, server.callback)
Ejemplo n.º 5
0
    def test_receive_msg_OK(self):
        """
        测试接收正确消息时是否能够返回Response对象
        @return: None
        """
        recv_data = (
            '<xml><ToUserName><![CDATA[wx82ef843a5129db66]]>'
            '</ToUserName><Encrypt><![CDATA[OoM+8tz/6B7iGq55'
            'mU5PoP6u9w4iJW2BP/L8MWMRGMGll3kue5NRtkqPcOwUVdyFTW'
            'saqUYvFXm0k7WVTt5d1ixBCb8FupfKP3eIar7ZPqwf7CYlXFT/'
            'vxUkO/y12LNr7LOJzxe2hKDwBMyZ/SJEo0OYuit8BzfiyvlBv'
            '300lnqDUnGvOumfp25i3WVxzV3FulKg/8VvAbqTBhiTUL3oRH'
            'xbBCIth6HlrNlrT4ePVz0Azkh++hRL57IRHU+FTTFz9wLjnyhm'
            'Agd8ka/j/SMrGtF0SiIGTjbzdWViKI8Jmpzox1N4ggBoABmbZTA'
            'HqgZZIKsKwVFnmZg+4kGbqDff+BuHqGzyuIVzfORJNTHT8sS8G'
            'meODAJeO+9HtR6lOO981tlsvfWgYAsfGyzMxRh1gxTEWBfqz6P'
            'A1unAlfLUNjr54Q0aJOwP2ELqQnMYFgggSGqoe638SISc3bLle'
            'rvxdw==]]></Encrypt><AgentID><![CDATA[2]]></AgentID></xml>')
        param_dict = {
            'msg_signature': '3483710b6ece7efff2dfcebb8aa258347eea6313',
            'timestamp': '1450092658',
            'nonce': '2095700682',
        }

        def reply_func(param):
            """
            自动回复函数
            @param param: 输入参数
            @return: 返回参数
            """
            param['Content'] = 'hello, world'
            return param

        with mock.patch('flask.request') as mock_request:
            # mock properties
            type(mock_request).method = mock.PropertyMock(return_value='POST')
            type(mock_request).args = mock.PropertyMock(
                return_value=param_dict)
            type(mock_request).data = mock.PropertyMock(return_value=recv_data)
            # load the server and do tests
            server = easy_wechat.WeChatServer('demo', 'config_test.ini')
            server.register_callback('text', reply_func)
            self.assertIsInstance(server.callback(), flask.Response)
Ejemplo n.º 6
0
import os
import sys
module_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(module_dir)

import easy_wechat
# from gevent.wsgi import WSGIServer


class TestClass(object):
    """
    测试类, 无实际含义
    """
    def reply_func(self, param_dict):
        """
        一个简答的自动回复函数, 自动给每条消息回复'hello, world'
        @param param_dict: 用户消息的参数
        @return: 向字典中填充对应回复内容后返回
        """
        param_dict['Content'] = 'hello, world'
        return param_dict


if __name__ == '__main__':
    server = easy_wechat.WeChatServer('demo')
    server.register_callback('text', TestClass().reply_func)
    server.run(host='0.0.0.0', port=6000, debug=False, threaded=False)
    # 使用gevent可以提高并发处理能力
    # http_server = WSGIServer(('', 8000), server.app)
    # http_server.serve_forever()