diff --git a/tests/test_auth.py b/tests/test_auth.py index cb53ba82..f3d1df88 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -1,5 +1,5 @@ """HTTP authentication-related tests.""" -import requests +import mock import pytest from utils import http, add_auth, HTTP_OK, TestEnvironment @@ -7,56 +7,58 @@ import httpie.input import httpie.cli -class TestAuth: - def test_basic_auth(self, httpbin): - r = http('--auth=user:password', - 'GET', httpbin.url + '/basic-auth/user/password') - assert HTTP_OK in r - assert r.json == {'authenticated': True, 'user': 'user'} +def test_basic_auth(httpbin): + r = http('--auth=user:password', + 'GET', httpbin.url + '/basic-auth/user/password') + assert HTTP_OK in r + assert r.json == {'authenticated': True, 'user': 'user'} - @pytest.mark.parametrize('argument_name', ['--auth-type', '-A']) - @pytest.mark.skipif( - requests.__version__ == '0.13.6', - reason='Redirects with prefetch=False are broken in Requests 0.13.6') - def test_digest_auth(self, httpbin, argument_name): - r = http(argument_name + '=digest', '--auth=user:password', - 'GET', httpbin.url + '/digest-auth/auth/user/password') - assert HTTP_OK in r - assert r.json == {'authenticated': True, 'user': 'user'} - def test_password_prompt(self, httpbin): - httpie.input.AuthCredentials._getpass = lambda self, prompt: 'password' - r = http('--auth', 'user', - 'GET', httpbin.url + '/basic-auth/user/password') - assert HTTP_OK in r - assert r.json == {'authenticated': True, 'user': 'user'} +@pytest.mark.parametrize('argument_name', ['--auth-type', '-A']) +def test_digest_auth(httpbin, argument_name): + r = http(argument_name + '=digest', '--auth=user:password', + 'GET', httpbin.url + '/digest-auth/auth/user/password') + assert HTTP_OK in r + assert r.json == {'authenticated': True, 'user': 'user'} - def test_credentials_in_url(self, httpbin): - url = add_auth(httpbin.url + '/basic-auth/user/password', - auth='user:password') - r = http('GET', url) - assert HTTP_OK in r - assert r.json == {'authenticated': True, 'user': 'user'} - def test_credentials_in_url_auth_flag_has_priority(self, httpbin): - """When credentials are passed in URL and via -a at the same time, - then the ones from -a are used.""" - url = add_auth(httpbin.url + '/basic-auth/user/password', - auth='user:wrong') - r = http('--auth=user:password', 'GET', url) - assert HTTP_OK in r - assert r.json == {'authenticated': True, 'user': 'user'} +@mock.patch('httpie.input.AuthCredentials._getpass', + new=lambda self, prompt: 'password') +def test_password_prompt(httpbin): + r = http('--auth', 'user', + 'GET', httpbin.url + '/basic-auth/user/password') + assert HTTP_OK in r + assert r.json == {'authenticated': True, 'user': 'user'} - @pytest.mark.parametrize('url', [ - 'username@example.org', - 'username:@example.org', - ]) - def test_only_username_in_url(self, url): - """ - https://github.com/jkbrzt/httpie/issues/242 - """ - args = httpie.cli.parser.parse_args(args=[url], env=TestEnvironment()) - assert args.auth - assert args.auth.key == 'username' - assert args.auth.value == '' +def test_credentials_in_url(httpbin): + url = add_auth(httpbin.url + '/basic-auth/user/password', + auth='user:password') + r = http('GET', url) + assert HTTP_OK in r + assert r.json == {'authenticated': True, 'user': 'user'} + + +def test_credentials_in_url_auth_flag_has_priority(httpbin): + """When credentials are passed in URL and via -a at the same time, + then the ones from -a are used.""" + url = add_auth(httpbin.url + '/basic-auth/user/password', + auth='user:wrong') + r = http('--auth=user:password', 'GET', url) + assert HTTP_OK in r + assert r.json == {'authenticated': True, 'user': 'user'} + + +@pytest.mark.parametrize('url', [ + 'username@example.org', + 'username:@example.org', +]) +def test_only_username_in_url(url): + """ + https://github.com/jkbrzt/httpie/issues/242 + + """ + args = httpie.cli.parser.parse_args(args=[url], env=TestEnvironment()) + assert args.auth + assert args.auth.key == 'username' + assert args.auth.value == '' diff --git a/tests/test_cli.py b/tests/test_cli.py index 00beb16b..d5e8f1f9 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -154,7 +154,7 @@ class TestQuerystring: assert '"url": "%s"' % url in r -class TestURLshorthand: +class TestLocalhostShorthand: def test_expand_localhost_shorthand(self): args = parser.parse_args(args=[':'], env=TestEnvironment()) assert args.url == 'http://localhost' diff --git a/tests/test_exit_status.py b/tests/test_exit_status.py index 131c52bb..9249c87b 100644 --- a/tests/test_exit_status.py +++ b/tests/test_exit_status.py @@ -1,63 +1,58 @@ -import requests -import pytest - from httpie import ExitStatus from utils import TestEnvironment, http, HTTP_OK -class TestExitStatus: - def test_ok_response_exits_0(self, httpbin): - r = http('GET', httpbin.url + '/status/200') - assert HTTP_OK in r - assert r.exit_status == ExitStatus.OK +def test_ok_response_exits_0(httpbin): + r = http('GET', httpbin.url + '/status/200') + assert HTTP_OK in r + assert r.exit_status == ExitStatus.OK - def test_error_response_exits_0_without_check_status(self, httpbin): - r = http('GET', httpbin.url + '/status/500') - assert '500 INTERNAL SERVER ERRO' in r - assert r.exit_status == ExitStatus.OK - assert not r.stderr - @pytest.mark.skipif( - tuple(map(int, requests.__version__.split('.'))) < (2, 3, 0), - reason='timeout broken in requests prior v2.3.0 (#185)' - ) - def test_timeout_exit_status(self, httpbin): +def test_error_response_exits_0_without_check_status(httpbin): + r = http('GET', httpbin.url + '/status/500') + assert '500 INTERNAL SERVER ERRO' in r + assert r.exit_status == ExitStatus.OK + assert not r.stderr - r = http('--timeout=0.01', 'GET', httpbin.url + '/delay/0.02', - error_exit_ok=True) - assert r.exit_status == ExitStatus.ERROR_TIMEOUT - def test_3xx_check_status_exits_3_and_stderr_when_stdout_redirected( - self, httpbin): - env = TestEnvironment(stdout_isatty=False) - r = http('--check-status', '--headers', - 'GET', httpbin.url + '/status/301', - env=env, error_exit_ok=True) - assert '301 MOVED PERMANENTLY' in r - assert r.exit_status == ExitStatus.ERROR_HTTP_3XX - assert '301 moved permanently' in r.stderr.lower() +def test_timeout_exit_status(httpbin): - @pytest.mark.skipif( - requests.__version__ == '0.13.6', - reason='Redirects with prefetch=False are broken in Requests 0.13.6') - def test_3xx_check_status_redirects_allowed_exits_0(self, httpbin): - r = http('--check-status', '--follow', - 'GET', httpbin.url + '/status/301', - error_exit_ok=True) - # The redirect will be followed so 200 is expected. - assert HTTP_OK in r - assert r.exit_status == ExitStatus.OK + r = http('--timeout=0.01', 'GET', httpbin.url + '/delay/0.02', + error_exit_ok=True) + assert r.exit_status == ExitStatus.ERROR_TIMEOUT - def test_4xx_check_status_exits_4(self, httpbin): - r = http('--check-status', 'GET', httpbin.url + '/status/401', - error_exit_ok=True) - assert '401 UNAUTHORIZED' in r - assert r.exit_status == ExitStatus.ERROR_HTTP_4XX - # Also stderr should be empty since stdout isn't redirected. - assert not r.stderr - def test_5xx_check_status_exits_5(self, httpbin): - r = http('--check-status', 'GET', httpbin.url + '/status/500', - error_exit_ok=True) - assert '500 INTERNAL SERVER ERROR' in r - assert r.exit_status == ExitStatus.ERROR_HTTP_5XX +def test_3xx_check_status_exits_3_and_stderr_when_stdout_redirected( + httpbin): + env = TestEnvironment(stdout_isatty=False) + r = http('--check-status', '--headers', + 'GET', httpbin.url + '/status/301', + env=env, error_exit_ok=True) + assert '301 MOVED PERMANENTLY' in r + assert r.exit_status == ExitStatus.ERROR_HTTP_3XX + assert '301 moved permanently' in r.stderr.lower() + + +def test_3xx_check_status_redirects_allowed_exits_0(httpbin): + r = http('--check-status', '--follow', + 'GET', httpbin.url + '/status/301', + error_exit_ok=True) + # The redirect will be followed so 200 is expected. + assert HTTP_OK in r + assert r.exit_status == ExitStatus.OK + + +def test_4xx_check_status_exits_4(httpbin): + r = http('--check-status', 'GET', httpbin.url + '/status/401', + error_exit_ok=True) + assert '401 UNAUTHORIZED' in r + assert r.exit_status == ExitStatus.ERROR_HTTP_4XX + # Also stderr should be empty since stdout isn't redirected. + assert not r.stderr + + +def test_5xx_check_status_exits_5(httpbin): + r = http('--check-status', 'GET', httpbin.url + '/status/500', + error_exit_ok=True) + assert '500 INTERNAL SERVER ERROR' in r + assert r.exit_status == ExitStatus.ERROR_HTTP_5XX diff --git a/tests/test_httpie.py b/tests/test_httpie.py index 6fb47bf6..391a437b 100644 --- a/tests/test_httpie.py +++ b/tests/test_httpie.py @@ -7,73 +7,82 @@ import httpie from httpie.compat import is_py26 -class TestHTTPie: +def test_debug(): + r = http('--debug') + assert r.exit_status == httpie.ExitStatus.OK + assert 'HTTPie %s' % httpie.__version__ in r.stderr + assert 'HTTPie data:' in r.stderr - def test_debug(self): - r = http('--debug') - assert r.exit_status == httpie.ExitStatus.OK - assert 'HTTPie %s' % httpie.__version__ in r.stderr - assert 'HTTPie data:' in r.stderr - def test_help(self): - r = http('--help', error_exit_ok=True) - assert r.exit_status == httpie.ExitStatus.OK - assert 'https://github.com/jkbrzt/httpie/issues' in r +def test_help(): + r = http('--help', error_exit_ok=True) + assert r.exit_status == httpie.ExitStatus.OK + assert 'https://github.com/jkbrzt/httpie/issues' in r - def test_version(self): - r = http('--version', error_exit_ok=True) - assert r.exit_status == httpie.ExitStatus.OK - # FIXME: py3 has version in stdout, py2 in stderr - assert httpie.__version__ == r.stderr.strip() + r.strip() - def test_GET(self, httpbin): - r = http('GET', httpbin.url + '/get') - assert HTTP_OK in r +def test_version(): + r = http('--version', error_exit_ok=True) + assert r.exit_status == httpie.ExitStatus.OK + # FIXME: py3 has version in stdout, py2 in stderr + assert httpie.__version__ == r.stderr.strip() + r.strip() - def test_DELETE(self, httpbin): - r = http('DELETE', httpbin.url + '/delete') - assert HTTP_OK in r - def test_PUT(self, httpbin): - r = http('PUT', httpbin.url + '/put', 'foo=bar') - assert HTTP_OK in r - assert r.json['json']['foo'] == 'bar' +def test_GET(httpbin): + r = http('GET', httpbin.url + '/get') + assert HTTP_OK in r - def test_POST_JSON_data(self, httpbin): - r = http('POST', httpbin.url + '/post', 'foo=bar') - assert HTTP_OK in r - assert r.json['json']['foo'] == 'bar' - def test_POST_form(self, httpbin): - r = http('--form', 'POST', httpbin.url + '/post', 'foo=bar') - assert HTTP_OK in r - assert '"foo": "bar"' in r +def test_DELETE(httpbin): + r = http('DELETE', httpbin.url + '/delete') + assert HTTP_OK in r - def test_POST_form_multiple_values(self, httpbin): - r = http('--form', 'POST', httpbin.url + '/post', 'foo=bar', 'foo=baz') - assert HTTP_OK in r - assert r.json['form'] == {'foo': ['bar', 'baz']} - def test_POST_stdin(self, httpbin): - with open(FILE_PATH) as f: - env = TestEnvironment(stdin=f, stdin_isatty=False) - r = http('--form', 'POST', httpbin.url + '/post', env=env) - assert HTTP_OK in r - assert FILE_CONTENT in r +def test_PUT(httpbin): + r = http('PUT', httpbin.url + '/put', 'foo=bar') + assert HTTP_OK in r + assert r.json['json']['foo'] == 'bar' - def test_headers(self, httpbin): - r = http('GET', httpbin.url + '/headers', 'Foo:bar') - assert HTTP_OK in r - assert '"User-Agent": "HTTPie' in r, r - assert '"Foo": "bar"' in r - @pytest.mark.skipif( - is_py26, - reason='the `object_pairs_hook` arg for `json.loads()` is Py>2.6 only' - ) - def test_json_input_preserve_order(self, httpbin): - r = http('PATCH', httpbin.url + '/patch', - 'order:={"map":{"1":"first","2":"second"}}') - assert HTTP_OK in r - assert r.json['data'] == \ - '{"order": {"map": {"1": "first", "2": "second"}}}' +def test_POST_JSON_data(httpbin): + r = http('POST', httpbin.url + '/post', 'foo=bar') + assert HTTP_OK in r + assert r.json['json']['foo'] == 'bar' + + +def test_POST_form(httpbin): + r = http('--form', 'POST', httpbin.url + '/post', 'foo=bar') + assert HTTP_OK in r + assert '"foo": "bar"' in r + + +def test_POST_form_multiple_values(httpbin): + r = http('--form', 'POST', httpbin.url + '/post', 'foo=bar', 'foo=baz') + assert HTTP_OK in r + assert r.json['form'] == {'foo': ['bar', 'baz']} + + +def test_POST_stdin(httpbin): + with open(FILE_PATH) as f: + env = TestEnvironment(stdin=f, stdin_isatty=False) + r = http('--form', 'POST', httpbin.url + '/post', env=env) + assert HTTP_OK in r + assert FILE_CONTENT in r + + +def test_headers(httpbin): + r = http('GET', httpbin.url + '/headers', 'Foo:bar') + assert HTTP_OK in r + assert '"User-Agent": "HTTPie' in r, r + assert '"Foo": "bar"' in r + + +@pytest.mark.skipif( + is_py26, + reason='the `object_pairs_hook` arg for `json.loads()` is Py>2.6 only' +) +def test_json_input_preserve_order(httpbin): + r = http('PATCH', httpbin.url + '/patch', + 'order:={"map":{"1":"first","2":"second"}}') + assert HTTP_OK in r + assert r.json['data'] == \ + '{"order": {"map": {"1": "first", "2": "second"}}}' diff --git a/tests/test_output.py b/tests/test_output.py index ac58315f..d20abade 100644 --- a/tests/test_output.py +++ b/tests/test_output.py @@ -9,7 +9,7 @@ from httpie.compat import urlopen from httpie.output.formatters.colors import get_lexer -@pytest.mark.parametrize('stdout_isatty', [(True,), (False,)]) +@pytest.mark.parametrize('stdout_isatty', [True, False]) def test_output_option(httpbin, stdout_isatty): output_filename = os.path.join(gettempdir(), test_output_option.__name__) url = httpbin + '/robots.txt' diff --git a/tests/test_stream.py b/tests/test_stream.py index 9e967519..48c8dbf6 100644 --- a/tests/test_stream.py +++ b/tests/test_stream.py @@ -6,37 +6,39 @@ from utils import http, TestEnvironment from fixtures import BIN_FILE_CONTENT, BIN_FILE_PATH -class TestStream: - # GET because httpbin 500s with binary POST body. +# GET because httpbin 500s with binary POST body. - @pytest.mark.skipif(is_windows, - reason='Pretty redirect not supported under Windows') - def test_pretty_redirected_stream(self, httpbin): - """Test that --stream works with prettified redirected output.""" - with open(BIN_FILE_PATH, 'rb') as f: - env = TestEnvironment(colors=256, stdin=f, - stdin_isatty=False, - stdout_isatty=False) - r = http('--verbose', '--pretty=all', '--stream', 'GET', - httpbin.url + '/get', env=env) - assert BINARY_SUPPRESSED_NOTICE.decode() in r - def test_encoded_stream(self, httpbin): - """Test that --stream works with non-prettified - redirected terminal output.""" - with open(BIN_FILE_PATH, 'rb') as f: - env = TestEnvironment(stdin=f, stdin_isatty=False) - r = http('--pretty=none', '--stream', '--verbose', 'GET', - httpbin.url + '/get', env=env) - assert BINARY_SUPPRESSED_NOTICE.decode() in r +@pytest.mark.skipif(is_windows, + reason='Pretty redirect not supported under Windows') +def test_pretty_redirected_stream(httpbin): + """Test that --stream works with prettified redirected output.""" + with open(BIN_FILE_PATH, 'rb') as f: + env = TestEnvironment(colors=256, stdin=f, + stdin_isatty=False, + stdout_isatty=False) + r = http('--verbose', '--pretty=all', '--stream', 'GET', + httpbin.url + '/get', env=env) + assert BINARY_SUPPRESSED_NOTICE.decode() in r - def test_redirected_stream(self, httpbin): - """Test that --stream works with non-prettified - redirected terminal output.""" - with open(BIN_FILE_PATH, 'rb') as f: - env = TestEnvironment(stdout_isatty=False, - stdin_isatty=False, - stdin=f) - r = http('--pretty=none', '--stream', '--verbose', 'GET', - httpbin.url + '/get', env=env) - assert BIN_FILE_CONTENT in r + +def test_encoded_stream(httpbin): + """Test that --stream works with non-prettified + redirected terminal output.""" + with open(BIN_FILE_PATH, 'rb') as f: + env = TestEnvironment(stdin=f, stdin_isatty=False) + r = http('--pretty=none', '--stream', '--verbose', 'GET', + httpbin.url + '/get', env=env) + assert BINARY_SUPPRESSED_NOTICE.decode() in r + + +def test_redirected_stream(httpbin): + """Test that --stream works with non-prettified + redirected terminal output.""" + with open(BIN_FILE_PATH, 'rb') as f: + env = TestEnvironment(stdout_isatty=False, + stdin_isatty=False, + stdin=f) + r = http('--pretty=none', '--stream', '--verbose', 'GET', + httpbin.url + '/get', env=env) + assert BIN_FILE_CONTENT in r diff --git a/tests/test_unicode.py b/tests/test_unicode.py index abcd9ebd..482fbb6c 100644 --- a/tests/test_unicode.py +++ b/tests/test_unicode.py @@ -7,81 +7,91 @@ from utils import http, HTTP_OK from fixtures import UNICODE -class TestUnicode: +def test_unicode_headers(httpbin): + # httpbin doesn't interpret utf8 headers + r = http(httpbin.url + '/headers', u'Test:%s' % UNICODE) + assert HTTP_OK in r - def test_unicode_headers(self, httpbin): - # httpbin doesn't interpret utf8 headers - r = http(httpbin.url + '/headers', u'Test:%s' % UNICODE) - assert HTTP_OK in r - def test_unicode_headers_verbose(self, httpbin): - # httpbin doesn't interpret utf8 headers - r = http('--verbose', httpbin.url + '/headers', u'Test:%s' % UNICODE) - assert HTTP_OK in r - assert UNICODE in r +def test_unicode_headers_verbose(httpbin): + # httpbin doesn't interpret utf8 headers + r = http('--verbose', httpbin.url + '/headers', u'Test:%s' % UNICODE) + assert HTTP_OK in r + assert UNICODE in r - def test_unicode_form_item(self, httpbin): - r = http('--form', 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) - assert HTTP_OK in r - assert r.json['form'] == {'test': UNICODE} - def test_unicode_form_item_verbose(self, httpbin): - r = http('--verbose', '--form', - 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) - assert HTTP_OK in r - assert UNICODE in r +def test_unicode_form_item(httpbin): + r = http('--form', 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) + assert HTTP_OK in r + assert r.json['form'] == {'test': UNICODE} - def test_unicode_json_item(self, httpbin): - r = http('--json', 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) - assert HTTP_OK in r - assert r.json['json'] == {'test': UNICODE} - def test_unicode_json_item_verbose(self, httpbin): - r = http('--verbose', '--json', - 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) - assert HTTP_OK in r - assert UNICODE in r +def test_unicode_form_item_verbose(httpbin): + r = http('--verbose', '--form', + 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) + assert HTTP_OK in r + assert UNICODE in r - def test_unicode_raw_json_item(self, httpbin): - r = http('--json', 'POST', httpbin.url + '/post', - u'test:={ "%s" : [ "%s" ] }' % (UNICODE, UNICODE)) - assert HTTP_OK in r - assert r.json['json'] == {'test': {UNICODE: [UNICODE]}} - def test_unicode_raw_json_item_verbose(self, httpbin): - r = http('--json', 'POST', httpbin.url + '/post', - u'test:={ "%s" : [ "%s" ] }' % (UNICODE, UNICODE)) - assert HTTP_OK in r - assert r.json['json'] == {'test': {UNICODE: [UNICODE]}} +def test_unicode_json_item(httpbin): + r = http('--json', 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) + assert HTTP_OK in r + assert r.json['json'] == {'test': UNICODE} - def test_unicode_url_query_arg_item(self, httpbin): - r = http(httpbin.url + '/get', u'test==%s' % UNICODE) - assert HTTP_OK in r - assert r.json['args'] == {'test': UNICODE}, r - def test_unicode_url_query_arg_item_verbose(self, httpbin): - r = http('--verbose', httpbin.url + '/get', u'test==%s' % UNICODE) - assert HTTP_OK in r - assert UNICODE in r +def test_unicode_json_item_verbose(httpbin): + r = http('--verbose', '--json', + 'POST', httpbin.url + '/post', u'test=%s' % UNICODE) + assert HTTP_OK in r + assert UNICODE in r - def test_unicode_url(self, httpbin): - r = http(httpbin.url + u'/get?test=' + UNICODE) - assert HTTP_OK in r - assert r.json['args'] == {'test': UNICODE} - # def test_unicode_url_verbose(self): - # r = http(httpbin.url + '--verbose', u'/get?test=' + UNICODE) - # assert HTTP_OK in r +def test_unicode_raw_json_item(httpbin): + r = http('--json', 'POST', httpbin.url + '/post', + u'test:={ "%s" : [ "%s" ] }' % (UNICODE, UNICODE)) + assert HTTP_OK in r + assert r.json['json'] == {'test': {UNICODE: [UNICODE]}} - def test_unicode_basic_auth(self, httpbin): - # it doesn't really authenticate us because httpbin - # doesn't interpret the utf8-encoded auth - http('--verbose', '--auth', u'test:%s' % UNICODE, - httpbin.url + u'/basic-auth/test/' + UNICODE) - def test_unicode_digest_auth(self, httpbin): - # it doesn't really authenticate us because httpbin - # doesn't interpret the utf8-encoded auth - http('--auth-type=digest', - '--auth', u'test:%s' % UNICODE, - httpbin.url + u'/digest-auth/auth/test/' + UNICODE) +def test_unicode_raw_json_item_verbose(httpbin): + r = http('--json', 'POST', httpbin.url + '/post', + u'test:={ "%s" : [ "%s" ] }' % (UNICODE, UNICODE)) + assert HTTP_OK in r + assert r.json['json'] == {'test': {UNICODE: [UNICODE]}} + + +def test_unicode_url_query_arg_item(httpbin): + r = http(httpbin.url + '/get', u'test==%s' % UNICODE) + assert HTTP_OK in r + assert r.json['args'] == {'test': UNICODE}, r + + +def test_unicode_url_query_arg_item_verbose(httpbin): + r = http('--verbose', httpbin.url + '/get', u'test==%s' % UNICODE) + assert HTTP_OK in r + assert UNICODE in r + + +def test_unicode_url(httpbin): + r = http(httpbin.url + u'/get?test=' + UNICODE) + assert HTTP_OK in r + assert r.json['args'] == {'test': UNICODE} + +# def test_unicode_url_verbose(self): +# r = http(httpbin.url + '--verbose', u'/get?test=' + UNICODE) +# assert HTTP_OK in r + + +def test_unicode_basic_auth(httpbin): + # it doesn't really authenticate us because httpbin + # doesn't interpret the utf8-encoded auth + http('--verbose', '--auth', u'test:%s' % UNICODE, + httpbin.url + u'/basic-auth/test/' + UNICODE) + + +def test_unicode_digest_auth(httpbin): + # it doesn't really authenticate us because httpbin + # doesn't interpret the utf8-encoded auth + http('--auth-type=digest', + '--auth', u'test:%s' % UNICODE, + httpbin.url + u'/digest-auth/auth/test/' + UNICODE)