def test_handle_user_request(): with patch.multiple('http.handle_requests', process_http_message=DEFAULT, handle_http_request=DEFAULT, HTTPRequest=DEFAULT, ServerRequestLogger=DEFAULT, handle_response=DEFAULT) as values: values['process_http_message'].return_value = request = mock_http_request() values['HTTPRequest'].return_value = request = mock_http_request() values['handle_http_request'].return_value = response = Mock(HTTPResponse) handle_user_request('abc') values['process_http_message'].assert_called_once_with(request, 'abc') values['handle_http_request'].assert_called_once_with(request) values['handle_response'].assert_called_once_with(response) values['ServerRequestLogger'].log.assert_called_once_with(request, response)
def test_handle_http_request_no_string_content(): request = mock_http_request() response = mock_http_response() action = MagicMock() action.return_value = '123' resp = handle_action(action, request, response) action.assert_called_once_with(request, response) assert '123' == resp.content
def test_handle_user_request(): with patch.multiple('http.handle_requests', process_http_message=DEFAULT, handle_http_request=DEFAULT, HTTPRequest=DEFAULT, ServerRequestLogger=DEFAULT, handle_response=DEFAULT) as values: values[ 'process_http_message'].return_value = request = mock_http_request( ) values['HTTPRequest'].return_value = request = mock_http_request() values['handle_http_request'].return_value = response = Mock( HTTPResponse) handle_user_request('abc') values['process_http_message'].assert_called_once_with(request, 'abc') values['handle_http_request'].assert_called_once_with(request) values['handle_response'].assert_called_once_with(response) values['ServerRequestLogger'].log.assert_called_once_with( request, response)
def test_handle_http_request_no_content(): request = mock_http_request() response = mock_http_response() action = MagicMock() action.return_value = None resp = handle_action(action, request, response) action.assert_called_once_with(request, response) assert resp == response assert response.status == 204 assert response.content_type == 'text/html' assert response.content == ''
def test_set_request_headers_without_host_must_raise_bad_request_exception(parse_headers): """ :type parse_headers: mock.MagicMock """ request = mock_http_request() headers = 'User-Agent: client/1.2.3' headers_bag = {'User-Agent': 'client/1.1.3'} parse_headers.return_value = headers_bag with pytest.raises(BadRequestHttpException): set_request_headers(request, headers) parse_headers.assert_called_once_with(headers)
def test_set_request_headers_with_host(parse_headers): """ :type parse_headers: mock.MagicMock """ request = mock_http_request() headers = 'Host: localhost:8181' headers_bag = {'Host': 'localhost:8181'} parse_headers.return_value = headers_bag set_request_headers(request, headers) parse_headers.assert_called_once_with(headers) assert request.headers == headers_bag
def test_handle_http_request_with_string_content_not_set_status(): request = mock_http_request() response = mock_http_response() response.status = None action = MagicMock() action.return_value = 'response' assert response.status != 200 resp = handle_action(action, request, response) action.assert_called_once_with(request, response) assert resp == response assert response.status == 200 assert resp.content_type == 'text/html' assert resp.content == 'response'
def test_handle_http_request_with_string_content_and_action_set_status_content_type(): request = mock_http_request() response = Mock(HTTPResponse) action = MagicMock() action.return_value = content = '<book>resource created</book>' response.status = 201 response.content_type = 'text/xml' resp = handle_action(action, request, response) action.assert_called_once_with(request, response) assert resp == response assert resp.status == 201 assert resp.content_type == 'text/xml' assert resp.content == content
def test_handle_http_request_with_string_content_and_action_set_status_content_type( ): request = mock_http_request() response = Mock(HTTPResponse) action = MagicMock() action.return_value = content = '<book>resource created</book>' response.status = 201 response.content_type = 'text/xml' resp = handle_action(action, request, response) action.assert_called_once_with(request, response) assert resp == response assert resp.status == 201 assert resp.content_type == 'text/xml' assert resp.content == content
def test_handle_http_exception(): e = Mock(HttpExceptionBase) e.status = 1234 e.message = 'message' request = mock_http_request() with patch.multiple('http.handle_requests', has_error_handler=DEFAULT, get_error_handler=DEFAULT) as values: values['has_error_handler'].return_value = False resp = handle_http_exception(request, e) values['has_error_handler'].assert_called_once() values['get_error_handler'].assert_has_calls([]) assert isinstance(resp, HTTPResponse) assert resp.status == 1234 assert resp.code == 'message' assert resp.content_type == 'text/html'
def test_handle_user_request_with_exception(): with patch.multiple('http.handle_requests', process_http_message=DEFAULT, handle_http_exception=DEFAULT, ServerRequestLogger=DEFAULT, HTTPRequest=DEFAULT, handle_response=DEFAULT) as values: values['process_http_message'].side_effect = e = BadRequestHttpException() values['handle_http_exception'].return_value = response = Mock(HTTPResponse) values['ServerRequestLogger'].log.return_value = '' values['HTTPRequest'].return_value = request = mock_http_request() handle_user_request('abc') values['ServerRequestLogger'].log.assert_called_once() values['process_http_message'].assert_called_once_with(request, 'abc') values['handle_http_exception'].assert_called_once_with(request, e) values['handle_response'].assert_called_once_with(response)
def test_handle_http_request(router): request = mock_http_request() request.path = '/welcome' request.method = 'GET' router.find_route.return_value = route = Mock(Route) route.getAction.return_value = action = 'action_handler' with patch.multiple('http.handle_requests', handle_action=DEFAULT, HTTPResponse=DEFAULT) as values: values['handle_action'].return_value = 'response' values['HTTPResponse'].return_value = response = Mock(HTTPResponse) resp = handle_http_request(request) values['handle_action'].assert_called_once_with(action, request, response) router.find_route.assert_called_once_with('GET', '/welcome') route.getAction.assert_called_once_with() assert resp == 'response'
def test_handle_http_exception_with_handler(): e = Mock(HttpExceptionBase) e.status = 123 request = mock_http_request() with patch.multiple('http.handle_requests', has_error_handler=DEFAULT, handle_action=DEFAULT, get_error_handler=DEFAULT) as values: values['has_error_handler'].return_value = True values['get_error_handler'].return_value = handler = MagicMock() with patch('http.handle_requests.HTTPResponse') as HTTPResponse_Mock: HTTPResponse_Mock.return_value = response = mock_http_response() resp = handle_http_exception(request, e) values['has_error_handler'].assert_called_once_with(123) values['get_error_handler'].assert_called_once_with(123) values['handle_action'].assert_called_once_with(handler, request, response)
def test_handle_http_exception_with_handler(): e = Mock(HttpExceptionBase) e.status = 123 request = mock_http_request() with patch.multiple('http.handle_requests', has_error_handler=DEFAULT, handle_action=DEFAULT, get_error_handler=DEFAULT) as values: values['has_error_handler'].return_value = True values['get_error_handler'].return_value = handler = MagicMock() with patch('http.handle_requests.HTTPResponse') as HTTPResponse_Mock: HTTPResponse_Mock.return_value = response = mock_http_response() resp = handle_http_exception(request, e) values['has_error_handler'].assert_called_once_with(123) values['get_error_handler'].assert_called_once_with(123) values['handle_action'].assert_called_once_with( handler, request, response)
def test_handle_http_request(router): request = mock_http_request() request.path = '/welcome' request.method = 'GET' router.find_route.return_value = route = Mock(Route) route.getAction.return_value = action = 'action_handler' with patch.multiple('http.handle_requests', handle_action=DEFAULT, HTTPResponse=DEFAULT) as values: values['handle_action'].return_value = 'response' values['HTTPResponse'].return_value = response = Mock(HTTPResponse) resp = handle_http_request(request) values['handle_action'].assert_called_once_with( action, request, response) router.find_route.assert_called_once_with('GET', '/welcome') route.getAction.assert_called_once_with() assert resp == 'response'
def test_handle_user_request_with_exception(): with patch.multiple('http.handle_requests', process_http_message=DEFAULT, handle_http_exception=DEFAULT, ServerRequestLogger=DEFAULT, HTTPRequest=DEFAULT, handle_response=DEFAULT) as values: values[ 'process_http_message'].side_effect = e = BadRequestHttpException( ) values['handle_http_exception'].return_value = response = Mock( HTTPResponse) values['ServerRequestLogger'].log.return_value = '' values['HTTPRequest'].return_value = request = mock_http_request() handle_user_request('abc') values['ServerRequestLogger'].log.assert_called_once() values['process_http_message'].assert_called_once_with(request, 'abc') values['handle_http_exception'].assert_called_once_with(request, e) values['handle_response'].assert_called_once_with(response)
def test_process_http_message(): with patch.multiple('http.request_builder', parse_initial_line=DEFAULT, set_request_method_path=DEFAULT, _check_method=DEFAULT, set_request_headers=DEFAULT) as values: # Character \r is removed from line #2, #3 message = '''POST /index.html HTTP/1.1\r User-Agent: Ocean/14.08.01 Host: localhost:8181 Accept: text/xml\r ''' values['parse_initial_line'].return_value = 'POST', '/index.html', 'HTTP/1.1' request = mock_http_request() result = process_http_message(request, message) values['parse_initial_line'].assert_called_once_with('POST /index.html HTTP/1.1') values['set_request_method_path'].assert_called_once_with(request, 'POST', '/index.html') values['_check_method'].assert_called_once_with('POST') values['set_request_headers'].assert_called_once_with(request, [ 'User-Agent: Ocean/14.08.01', 'Host: localhost:8181', 'Accept: text/xml' ]) assert result == None