"""High-level tests.""" import pytest from httpie import ExitStatus from utils import http, HTTP_OK def test_follow_all_redirects_shown(httpbin): r = http('--follow', '--all', httpbin.url + '/redirect/2') assert r.count('HTTP/1.1') == 3 assert r.count('HTTP/1.1 302 FOUND', 2) assert HTTP_OK in r @pytest.mark.parametrize('follow_flag', ['--follow', '-F']) def test_follow_without_all_redirects_hidden(httpbin, follow_flag): r = http(follow_flag, httpbin.url + '/redirect/2') assert r.count('HTTP/1.1') == 1 assert HTTP_OK in r def test_follow_all_output_options_used_for_redirects(httpbin): r = http('--check-status', '--follow', '--all', '--print=H', httpbin.url + '/redirect/2') assert r.count('GET /') == 3 assert HTTP_OK not in r def test_follow_redirect_output_options(httpbin): r = http('--check-status', '--follow', '--all', '--print=h', '--history-print=H', httpbin.url + '/redirect/2') assert r.count('GET /') == 2 assert 'HTTP/1.1 302 FOUND' not in r assert HTTP_OK in r def test_max_redirects(httpbin): r = http('--max-redirects=1', '--follow', httpbin.url + '/redirect/3', error_exit_ok=True) assert r.exit_status == ExitStatus.ERROR_TOO_MANY_REDIRECTS