Example #1
0
def test_technical_500_response(settings, mock_api_response, mocker, rf, capsys):
    settings.DEBUG = True
    test_data_url = 'http://www.fixmydjango.com/test-server'

    try:
        raise ValueError("test")
    except:
        exc_info = sys.exc_info()

    def clean_traceback(tb):
        # remove \r
        tb = tb.replace('\r', '')
        # remove empty lines
        tb_lines = [line for line in tb.split('\n')
                    if line.strip()]
        return '\n'.join(tb_lines)
    mocker.patch('fixmydjango.is_django_exception', return_value=True)
    mocker.patch('fixmydjango.clean_traceback', side_effect=clean_traceback)
    mocker.patch('fixmydjango.sanitize_traceback', side_effect=lambda x: x)

    request = rf.get(reverse('test-error'))
    response = technical_500_response(request, *exc_info)

    assert response.status_code == 500
    assert format_template(FIX_MY_DJANGO_MESSAGE[0:50], {'url': test_data_url}) in response.content

    out, err = capsys.readouterr()
    assert out == colored(FIX_MY_DJANGO_MESSAGE_PLAIN.format(url=test_data_url), 'yellow') + '\n'
def test_error_view(settings, api_live_server, live_server, capsys):
    settings.DEBUG = True

    # this test doesn't works in Django <= 1.6,
    # because in this version live_server doesn't work with DEBUG=True.
    # see: https://github.com/fjsj/liveservererror
    if LooseVersion(django.get_version()) >= LooseVersion('1.7'):
        test_data_url = 'http://www.fixmydjango.com/test-server'

        # need to use live_server, because
        # test client launches exceptions thrown inside views
        response = requests.get(live_server.url + reverse('test-error'))

        assert response.status_code == 500
        assert format_template(FIX_MY_DJANGO_MESSAGE[0:50], {}) in response.content

        out, err = capsys.readouterr()
        assert out == colored(FIX_MY_DJANGO_MESSAGE_PLAIN.format(url=test_data_url), 'yellow') + '\n'
def test_error_view(settings, api_live_server, live_server, capsys):
    settings.DEBUG = True

    # this test doesn't works in Django <= 1.6,
    # because in this version live_server doesn't work with DEBUG=True.
    # see: https://github.com/fjsj/liveservererror
    if LooseVersion(django.get_version()) >= LooseVersion('1.7'):
        test_data_url = 'http://www.fixmydjango.com/test-server'

        # need to use live_server, because
        # test client launches exceptions thrown inside views
        response = requests.get(live_server.url + reverse('test-error'))

        assert response.status_code == 500
        assert format_template(FIX_MY_DJANGO_MESSAGE[0:50],
                               {}) in response.content

        out, err = capsys.readouterr()
        assert out == colored(
            FIX_MY_DJANGO_MESSAGE_PLAIN.format(url=test_data_url),
            'yellow') + '\n'
Example #4
0
def test_technical_500_response_not_django(settings, mocker, rf, capsys):
    settings.DEBUG = True
    test_data_url = 'http://www.fixmydjango.com/test-server'

    try:
        raise ValueError("test")
    except:
        exc_info = sys.exc_info()

    mocker.patch('fixmydjango.is_django_exception', return_value=False)
    mocker.spy(requests, 'get')

    request = rf.get(reverse('test-error'))
    response = technical_500_response(request, *exc_info)

    assert requests.get.call_count == 0

    assert response.status_code == 500
    assert format_template(FIX_MY_DJANGO_MESSAGE, {'url': test_data_url}) not in response.content

    out, err = capsys.readouterr()
    assert out == ''
Example #5
0
def test_technical_500_response_not_interfered_by_some_bug(settings, mocker, rf, capsys):
    settings.DEBUG = True
    test_data_url = 'http://www.fixmydjango.com/test-server'

    def raise_exception(__):
        raise Exception("bug")

    try:
        raise ValueError("test")
    except:
        exc_info = sys.exc_info()

    mocker.patch('fixmydjango.is_django_exception', side_effect=raise_exception)

    request = rf.get(reverse('test-error'))
    response = technical_500_response(request, *exc_info)

    assert response.status_code == 500
    assert format_template(FIX_MY_DJANGO_MESSAGE, {'url': test_data_url}) not in response.content

    out, err = capsys.readouterr()
    assert FIX_MY_DJANGO_OOPS_MESSAGE in out
    assert 'Traceback (most recent call last):' not in out