Beispiel #1
0
    def test_call_invalid_dict_params(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 106\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_result", "params": {"a": 123, "b": "abc", "c": true}}'''
        client.send(data)
        base.loop(count=3)
        resp = http_client.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError as err:
            self.assertEqual(err.code, -32602)
            self.assertEqual(err.message, 'Invalid params.')
            self.assertEqual(
                err.data, {
                    'method': 'test_result',
                    'params': {
                        'a': 123,
                        'b': 'abc',
                        'c': True
                    }
                })
Beispiel #2
0
 def test_http_post_data(self):
     client = socket.create_connection(('localhost', self.port), 1)
     data = 'POST / HTTP/1.1\r\nContent-Length: 14\r\n\r\nTest text data'
     client.send(data)
     base.loop()
     resp = httplib.HTTPResponse(client)
     resp.begin()
     data = resp.read()
     client.close()
     self.assertEqual(self.server.resp_code, 200)
     try:
         base.loads(data)
     except errors.JsonRpcError, err:
         self.assertEqual(err.code, -32700)
         self.assertEqual(err.message, 'Parse error.')
Beispiel #3
0
 def test_http_post_data(self):
     client = socket.create_connection(('localhost', self.port), 1)
     data = 'POST / HTTP/1.1\r\nContent-Length: 14\r\n\r\nTest text data'
     client.send(data)
     base.loop(count=3)
     resp = http_client.HTTPResponse(client)
     resp.begin()
     data = resp.read()
     client.close()
     self.assertEqual(self.server.resp_code, 200)
     try:
         base.loads(data)
     except errors.JsonRpcError as err:
         self.assertEqual(err.code, -32700)
         self.assertEqual(err.message, 'Parse error.')
Beispiel #4
0
 def _request_callback(self, data):
     try:
         self.assertTrue(data.startswith(HTTP_REQ_LINE))
         self._request = base.loads(data.split('\r\n\r\n')[1],
                                    [base.JsonRpcRequest])
     except Exception, err:
         self._request = err
Beispiel #5
0
 def _request_callback(self, data):
     try:
         self.assertTrue(data.startswith(HTTP_REQ_LINE))
         self._request = base.loads(data.split('\r\n\r\n')[1],
                                    [base.JsonRpcRequest])
     except Exception as err:
         self._request = err
Beispiel #6
0
    def test_call_method_few_times(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 85\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_result", "params": [123, "abc"]}'''
        client.send(data)
        client.send(data)
        client.send(data)
        base.loop(count=3)
        # First
        resp = http_client.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        self.assertEqual(self.server.resp_code, 200)
        response = base.loads(data, [base.JsonRpcResponse])
        self.assertTrue(isinstance(response, base.JsonRpcResponse))
        self.assertEqual(response.id, '12345abc')
        self.assertEqual(response.result, {
            'status': 'OK',
            'params': {
                'a': 123,
                'b': 'abc'
            }
        })
        # Second...
        resp = http_client.HTTPResponse(client)
        try:
            resp.begin()
        except http_client.BadStatusLine as err:
            self.assertEqual(str(err), "''")
        else:
            self.assertFalse(True)
        finally:
            client.close()
Beispiel #7
0
    def test_call_method_few_times(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 85\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_result", "params": [123, "abc"]}'''
        client.send(data)
        client.send(data)
        client.send(data)
        base.loop()
        # First
        resp = httplib.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        self.assertEqual(self.server.resp_code, 200)
        response = base.loads(data, [base.JsonRpcResponse])
        self.assertTrue(isinstance(response, base.JsonRpcResponse))
        self.assertEqual(response.id, '12345abc')
        self.assertEqual(response.result, {'status': 'OK',
                                           'params': {'a': 123, 'b': 'abc'}})
        # Second...
        resp = httplib.HTTPResponse(client)
        try:
            resp.begin()
        except httplib.BadStatusLine, err:
            self.assertEqual(str(err), '')
Beispiel #8
0
    def test_interface_on_error(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 82\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_on_error", "params": ["efg"]}'''
        client.send(data)
        base.loop(count=3)
        resp = http_client.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError as err:
            self.assertEqual(err.code, -32603)
            self.assertEqual(err.message, 'Internal error.')
            self.assertEqual(err.data, {'exception': 'efg'})
Beispiel #9
0
    def test_call_private_method_not_found(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 96\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "_on_result", "params": {"a": "abc", "b": "efg"}}'''
        client.send(data)
        base.loop(count=3)
        resp = http_client.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError as err:
            self.assertEqual(err.code, -32601)
            self.assertEqual(err.message, 'Method not found.')
            self.assertEqual(err.data, {'method': '_on_result'})
Beispiel #10
0
    def test_interface_on_error(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 82\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_on_error", "params": ["efg"]}'''
        client.send(data)
        base.loop()
        resp = httplib.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError, err:
            self.assertEqual(err.code, -32603)
            self.assertEqual(err.message, 'Internal error.')
            self.assertEqual(err.data, {'exception': 'efg'})
Beispiel #11
0
    def test_call_method_not_found(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 102\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "method_not_found", "params": {"a": "abc", "b": "efg"}}'''
        client.send(data)
        base.loop()
        resp = httplib.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError, err:
            self.assertEqual(err.code, -32601)
            self.assertEqual(err.message, 'Method not found.')
            self.assertEqual(err.data, {'method': 'method_not_found'})
Beispiel #12
0
    def test_call_invalid_dict_params(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 106\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_result", "params": {"a": 123, "b": "abc", "c": true}}'''
        client.send(data)
        base.loop()
        resp = httplib.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        try:
            base.loads(data, [base.JsonRpcResponse])
        except errors.JsonRpcError, err:
            self.assertEqual(err.code, -32602)
            self.assertEqual(err.message, 'Invalid params.')
            self.assertEqual(err.data, {'method': 'test_result',
                                        'params': {'a': 123, 'b': 'abc', 'c': True}})
Beispiel #13
0
 def test_loads_request(self):
     req_id = '_test_id_'
     params = [1, 'b', {'c': 3}]
     message = {
         'jsonrpc': base.SPEC_VER,
         'method': 'foo',
         'params': params,
         'id': req_id
     }
     msg = base.loads(json.dumps(message),
                      [base.JsonRpcNotification, base.JsonRpcRequest])
     self.assertTrue(isinstance(msg, base.JsonRpcRequest))
     self.assertEqual(msg.id, req_id)
     self.assertEqual(msg.params, params)
Beispiel #14
0
 def test_loads_request(self):
     req_id = '_test_id_'
     params = [1, 'b', {'c': 3}]
     message = {
         'jsonrpc': base.SPEC_VER,
         'method': 'foo',
         'params': params,
         'id': req_id
     }
     msg = base.loads(json.dumps(message),
                      [base.JsonRpcNotification, base.JsonRpcRequest])
     self.assertTrue(isinstance(msg, base.JsonRpcRequest))
     self.assertEqual(msg.id, req_id)
     self.assertEqual(msg.params, params)
Beispiel #15
0
    def test_interface_on_result(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 88\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_on_result", "params": [123, "abc"]}'''
        client.send(data)
        base.loop()
        resp = httplib.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        response = base.loads(data, [base.JsonRpcResponse])
        self.assertTrue(isinstance(response, base.JsonRpcResponse))
        self.assertEqual(response.id, '12345abc')
        self.assertEqual(response.result, {'status': 'OK',
                                           'params': {'a': 123, 'b': 'abc'}})
Beispiel #16
0
    def test_interface_on_result(self):
        client = socket.create_connection(('localhost', self.port), 1)
        data = '''POST / HTTP/1.1\r
Content-Length: 88\r
\r
{"jsonrpc": "2.0", "id": "12345abc", "method": "test_on_result", "params": [123, "abc"]}'''
        client.send(data)
        base.loop(count=3)
        resp = http_client.HTTPResponse(client)
        resp.begin()
        data = resp.read()
        client.close()
        self.assertEqual(self.server.resp_code, 200)
        response = base.loads(data, [base.JsonRpcResponse])
        self.assertTrue(isinstance(response, base.JsonRpcResponse))
        self.assertEqual(response.id, '12345abc')
        self.assertEqual(response.result, {
            'status': 'OK',
            'params': {
                'a': 123,
                'b': 'abc'
            }
        })