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 } })
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.')
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.')
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
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
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()
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), '')
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'})
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'})
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'})
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'})
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}})
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)
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'}})
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' } })