mirror of
https://github.com/httpie/cli.git
synced 2025-08-17 08:21:11 +02:00
Run tests against local httpbin instance via pytest-httpbin.
This commit is contained in:
@ -2,27 +2,28 @@ import pytest
|
||||
|
||||
from httpie import ExitStatus
|
||||
from httpie.output.formatters.colors import get_lexer
|
||||
from utils import TestEnvironment, http, httpbin, HTTP_OK, COLOR, CRLF
|
||||
from utils import TestEnvironment, http, HTTP_OK, COLOR, CRLF
|
||||
|
||||
|
||||
class TestVerboseFlag:
|
||||
def test_verbose(self):
|
||||
r = http('--verbose', 'GET', httpbin('/get'), 'test-header:__test__')
|
||||
def test_verbose(self, httpbin):
|
||||
r = http('--verbose',
|
||||
'GET', httpbin.url + '/get', 'test-header:__test__')
|
||||
assert HTTP_OK in r
|
||||
assert r.count('__test__') == 2
|
||||
|
||||
def test_verbose_form(self):
|
||||
def test_verbose_form(self, httpbin):
|
||||
# https://github.com/jakubroztocil/httpie/issues/53
|
||||
r = http('--verbose', '--form', 'POST', httpbin('/post'),
|
||||
r = http('--verbose', '--form', 'POST', httpbin.url + '/post',
|
||||
'A=B', 'C=D')
|
||||
assert HTTP_OK in r
|
||||
assert 'A=B&C=D' in r
|
||||
|
||||
def test_verbose_json(self):
|
||||
r = http('--verbose', 'POST', httpbin('/post'), 'foo=bar', 'baz=bar')
|
||||
def test_verbose_json(self, httpbin):
|
||||
r = http('--verbose',
|
||||
'POST', httpbin.url + '/post', 'foo=bar', 'baz=bar')
|
||||
assert HTTP_OK in r
|
||||
assert '"baz": "bar"' in r # request
|
||||
assert r'\"baz\": \"bar\"' in r # response
|
||||
assert '"baz": "bar"' in r
|
||||
|
||||
|
||||
class TestColors:
|
||||
@ -47,45 +48,47 @@ class TestColors:
|
||||
class TestPrettyOptions:
|
||||
"""Test the --pretty flag handling."""
|
||||
|
||||
def test_pretty_enabled_by_default(self):
|
||||
def test_pretty_enabled_by_default(self, httpbin):
|
||||
env = TestEnvironment(colors=256)
|
||||
r = http('GET', httpbin('/get'), env=env)
|
||||
r = http('GET', httpbin.url + '/get', env=env)
|
||||
assert COLOR in r
|
||||
|
||||
def test_pretty_enabled_by_default_unless_stdout_redirected(self):
|
||||
r = http('GET', httpbin('/get'))
|
||||
def test_pretty_enabled_by_default_unless_stdout_redirected(self, httpbin):
|
||||
r = http('GET', httpbin.url + '/get')
|
||||
assert COLOR not in r
|
||||
|
||||
def test_force_pretty(self):
|
||||
def test_force_pretty(self, httpbin):
|
||||
env = TestEnvironment(stdout_isatty=False, colors=256)
|
||||
r = http('--pretty=all', 'GET', httpbin('/get'), env=env, )
|
||||
r = http('--pretty=all', 'GET', httpbin.url + '/get', env=env, )
|
||||
assert COLOR in r
|
||||
|
||||
def test_force_ugly(self):
|
||||
r = http('--pretty=none', 'GET', httpbin('/get'))
|
||||
def test_force_ugly(self, httpbin):
|
||||
r = http('--pretty=none', 'GET', httpbin.url + '/get')
|
||||
assert COLOR not in r
|
||||
|
||||
def test_subtype_based_pygments_lexer_match(self):
|
||||
def test_subtype_based_pygments_lexer_match(self, httpbin):
|
||||
"""Test that media subtype is used if type/subtype doesn't
|
||||
match any lexer.
|
||||
|
||||
"""
|
||||
env = TestEnvironment(colors=256)
|
||||
r = http('--print=B', '--pretty=all', httpbin('/post'),
|
||||
r = http('--print=B', '--pretty=all', httpbin.url + '/post',
|
||||
'Content-Type:text/foo+json', 'a=b', env=env)
|
||||
assert COLOR in r
|
||||
|
||||
def test_colors_option(self):
|
||||
def test_colors_option(self, httpbin):
|
||||
env = TestEnvironment(colors=256)
|
||||
r = http('--print=B', '--pretty=colors', 'GET', httpbin('/get'), 'a=b',
|
||||
r = http('--print=B', '--pretty=colors',
|
||||
'GET', httpbin.url + '/get', 'a=b',
|
||||
env=env)
|
||||
# Tests that the JSON data isn't formatted.
|
||||
assert not r.strip().count('\n')
|
||||
assert COLOR in r
|
||||
|
||||
def test_format_option(self):
|
||||
def test_format_option(self, httpbin):
|
||||
env = TestEnvironment(colors=256)
|
||||
r = http('--print=B', '--pretty=format', 'GET', httpbin('/get'), 'a=b',
|
||||
r = http('--print=B', '--pretty=format',
|
||||
'GET', httpbin.url + '/get', 'a=b',
|
||||
env=env)
|
||||
# Tests that the JSON data is formatted.
|
||||
assert r.strip().count('\n') == 2
|
||||
@ -110,24 +113,24 @@ class TestLineEndings:
|
||||
assert CRLF not in body
|
||||
return body
|
||||
|
||||
def test_CRLF_headers_only(self):
|
||||
r = http('--headers', 'GET', httpbin('/get'))
|
||||
def test_CRLF_headers_only(self, httpbin):
|
||||
r = http('--headers', 'GET', httpbin.url + '/get')
|
||||
body = self._validate_crlf(r)
|
||||
assert not body, 'Garbage after headers: %r' % r
|
||||
|
||||
def test_CRLF_ugly_response(self):
|
||||
r = http('--pretty=none', 'GET', httpbin('/get'))
|
||||
def test_CRLF_ugly_response(self, httpbin):
|
||||
r = http('--pretty=none', 'GET', httpbin.url + '/get')
|
||||
self._validate_crlf(r)
|
||||
|
||||
def test_CRLF_formatted_response(self):
|
||||
r = http('--pretty=format', 'GET', httpbin('/get'))
|
||||
def test_CRLF_formatted_response(self, httpbin):
|
||||
r = http('--pretty=format', 'GET', httpbin.url + '/get')
|
||||
assert r.exit_status == ExitStatus.OK
|
||||
self._validate_crlf(r)
|
||||
|
||||
def test_CRLF_ugly_request(self):
|
||||
r = http('--pretty=none', '--print=HB', 'GET', httpbin('/get'))
|
||||
def test_CRLF_ugly_request(self, httpbin):
|
||||
r = http('--pretty=none', '--print=HB', 'GET', httpbin.url + '/get')
|
||||
self._validate_crlf(r)
|
||||
|
||||
def test_CRLF_formatted_request(self):
|
||||
r = http('--pretty=format', '--print=HB', 'GET', httpbin('/get'))
|
||||
def test_CRLF_formatted_request(self, httpbin):
|
||||
r = http('--pretty=format', '--print=HB', 'GET', httpbin.url + '/get')
|
||||
self._validate_crlf(r)
|
||||
|
Reference in New Issue
Block a user