def handle_user_request(message, *args, **kwargs):
    request = HTTPRequest()
    try:
        process_http_message(request, message, *args, **kwargs)
        response = handle_http_request(request)
    except HttpExceptionBase, e:
        response = handle_http_exception(request, e)
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