def test_process_requests_with_errors(self): request1 = JSONRPC20Serializer.assemble_request( 'blow_up', (2, 3) ) request2 = JSONRPC20Serializer.assemble_request( 'adder', (4, 3) ) requests, is_batch_mode = JSONRPC20Serializer.parse_request( JSONRPC20Serializer.json_dumps([request1, request2]) ) responses = self.app.process_requests(requests) assert len(responses) == 2 response_json = responses[0] assert 'error' in response_json assert set(response_json['error'].keys()) == {'code', 'message', 'data'} assert response_json['error']['message'] == 'Blowing up on command' # actual .message from the raised error assert response_json['id'] == request1['id'] response_json = responses[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7
def test_handle_request_string(self): request1 = JSONRPC20Serializer.assemble_request( 'adder', (2, 3) ) request2 = JSONRPC20Serializer.assemble_request( 'adder', (4, 3) ) requests_string = JSONRPC20Serializer.json_dumps([request1, request2]) response_string = self.app.handle_request_string(requests_string) responses_data = JSONRPC20Serializer.json_loads(response_string) assert len(responses_data) == 2 response_json = responses_data[0] assert 'error' not in response_json assert response_json['id'] == request1['id'] assert response_json['result'] == 5 response_json = responses_data[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7
def test_process_requests(self): request1 = JSONRPC20Serializer.assemble_request('adder', (2, 3)) request2 = JSONRPC20Serializer.assemble_request('adder', (4, 3)) request3 = JSONRPC20Serializer.assemble_request( 'adder' # note: no args. 'adder' can take it. JSONRpc app must too ) assert len({request1['id'], request2['id'], request3['id']}) == 3 requests, is_batch_mode = JSONRPC20Serializer.parse_request( JSONRPC20Serializer.json_dumps([request1, request2, request3])) responses = self.app.process_requests(requests) assert len(responses) == 3 response_json = responses[0] assert 'error' not in response_json assert response_json['id'] == request1['id'] assert response_json['result'] == 5 response_json = responses[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7 response_json = responses[2] assert 'error' not in response_json assert response_json['id'] == request3['id'] assert response_json['result'] == 0
def test_handle_request_string(self): request1 = JSONRPC20Serializer.assemble_request( 'pass_through', (2, 3) ) request_id = request1['id'] requests_string = JSONRPC20Serializer.json_dumps(request1) response_string = self.app.handle_request_string( requests_string, some_context_data='value', more_context_data=['value'] ) response_json = JSONRPC20Serializer.json_loads(response_string) assert 'error' not in response_json assert response_json['id'] == request1['id'] args, kwargs = response_json['result'] assert args == [2, 3] self.assertEqual( dict( request_id=request_id, some_context_data='value', more_context_data=['value'] ), kwargs )
def test_handle_wsgi_request(self): request1 = JSONRPC20Serializer.assemble_request('adder', (2, 3)) request2 = JSONRPC20Serializer.assemble_request('adder', (4, 3)) requests_string = JSONRPC20Serializer.json_dumps([request1, request2]) environ = MockWSGIEnviron(requests_string, [('CONTENT_TYPE', 'application/json'), ('CONTENT_LENGTH', len(requests_string))]) start_response = MockWSGIStartResponse() response_iterable = self.app(environ, start_response) assert response_iterable response_string = ''.join(response_iterable) responses_data = JSONRPC20Serializer.json_loads(response_string) assert len(responses_data) == 2 response_json = responses_data[0] assert 'error' not in response_json assert response_json['id'] == request1['id'] assert response_json['result'] == 5 response_json = responses_data[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7
def test_handle_wsgi_request(self): request1 = JSONRPC20Serializer.assemble_request( 'adder', (2, 3) ) request2 = JSONRPC20Serializer.assemble_request( 'adder', (4, 3) ) requests_string = JSONRPC20Serializer.json_dumps([request1, request2]) environ = MockWSGIEnviron( requests_string, [ ('CONTENT_TYPE', 'application/json'), ('CONTENT_LENGTH', len(requests_string)) ] ) start_response = MockWSGIStartResponse() response_iterable = self.app(environ, start_response) assert response_iterable response_string = ''.join(response_iterable) responses_data = JSONRPC20Serializer.json_loads(response_string) assert len(responses_data) == 2 response_json = responses_data[0] assert 'error' not in response_json assert response_json['id'] == request1['id'] assert response_json['result'] == 5 response_json = responses_data[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7
def test_process_requests(self): request1 = JSONRPC20Serializer.assemble_request( 'adder', (2, 3) ) request2 = JSONRPC20Serializer.assemble_request( 'adder', (4, 3) ) request3 = JSONRPC20Serializer.assemble_request( 'adder' # note: no args. 'adder' can take it. JSONRpc app must too ) assert len({request1['id'], request2['id'], request3['id']}) == 3 requests, is_batch_mode = JSONRPC20Serializer.parse_request( JSONRPC20Serializer.json_dumps([request1, request2, request3]) ) responses = self.app.process_requests(requests) assert len(responses) == 3 response_json = responses[0] assert 'error' not in response_json assert response_json['id'] == request1['id'] assert response_json['result'] == 5 response_json = responses[1] assert 'error' not in response_json assert response_json['id'] == request2['id'] assert response_json['result'] == 7 response_json = responses[2] assert 'error' not in response_json assert response_json['id'] == request3['id'] assert response_json['result'] == 0