def test_create_error(self): # If: I create an error message message = JSONRPCMessage.create_error(10, 20, 'msg', {}) # Then: # ... The message should have all the properties I defined self.assertIsNotNone(message) self.assertEqual(message.message_id, 10) self.assertIsNone(message.message_method) self.assertIsNone(message.message_params) self.assertIsNone(message.message_result) self.assertIsNotNone(message.message_error) self.assertEqual(message.message_error['code'], 20) self.assertEqual(message.message_error['message'], 'msg') self.assertDictEqual(message.message_error['data'], {}) self.assertEqual(message.message_type, JSONRPCMessageType.ResponseError) # ... The dictionary should have the same values stored dictionary = message.dictionary self.assertIsNotNone(dictionary) self.assertDictEqual( dictionary, { 'jsonrpc': '2.0', 'error': { 'code': 20, 'message': 'msg', 'data': {} }, 'id': 10 })
def send_error(self, message, data=None, code=0): """ Sends a failure response to this request :param message: Concise 1-sentence message explanation of the error :param data: Optional data to send back with the error :param code: Optional error code to identify the error """ message = JSONRPCMessage.create_error(self._message.message_id, code, message, data) self._queue.put(message)
def _received_error_callback(self, message: str, data: any = None, code: int = 0): error = ReceivedError(code, message, data) rpc_message = JSONRPCMessage.create_error(0, code, message, data) received_message = ReceivedMessage(JSONRPCMessageType.ResponseError, None, error, type(data), rpc_message) self._received_messages.append(received_message)
def test_dispatch_response_error(): # TODO: Replace with robust logic once error routing is implemented # If: I dispatch an error message message = JSONRPCMessage.create_error('123', 0, message='', data={}) server = JSONRPCServer(None, None, logger=utils.get_mock_logger()) server._dispatch_message(message)