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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 7
0
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_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
Ejemplo n.º 11
0
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'
Ejemplo n.º 12
0
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'
Ejemplo n.º 16
0
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_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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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'
Ejemplo n.º 20
0
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