forked from extern/httpie-cli
Skip http://pie.dev tests when offline (#1072)
This commit is contained in:
parent
fc7a349d36
commit
355befcbfc
@ -1,6 +1,9 @@
|
||||
import socket
|
||||
import pytest
|
||||
from pytest_httpbin import certs
|
||||
|
||||
from .utils import HTTPBIN_WITH_CHUNKED_SUPPORT_DOMAIN, HTTPBIN_WITH_CHUNKED_SUPPORT
|
||||
|
||||
|
||||
@pytest.fixture(scope='function', autouse=True)
|
||||
def httpbin_add_ca_bundle(monkeypatch):
|
||||
@ -22,3 +25,19 @@ def httpbin_secure_untrusted(monkeypatch, httpbin_secure):
|
||||
"""
|
||||
monkeypatch.delenv('REQUESTS_CA_BUNDLE')
|
||||
return httpbin_secure
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def _httpbin_with_chunked_support_available():
|
||||
try:
|
||||
socket.gethostbyname(HTTPBIN_WITH_CHUNKED_SUPPORT_DOMAIN)
|
||||
return True
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def httpbin_with_chunked_support(_httpbin_with_chunked_support_available):
|
||||
if _httpbin_with_chunked_support_available:
|
||||
return HTTPBIN_WITH_CHUNKED_SUPPORT
|
||||
pytest.skip('{} not resolvable'.format(HTTPBIN_WITH_CHUNKED_SUPPORT_DOMAIN))
|
||||
|
@ -10,7 +10,7 @@ TODO: cover more scenarios
|
||||
|
||||
"""
|
||||
from .utils.matching import assert_output_matches, Expect
|
||||
from .utils import http, HTTP_OK, MockEnvironment, HTTPBIN_WITH_CHUNKED_SUPPORT
|
||||
from .utils import http, HTTP_OK, MockEnvironment
|
||||
|
||||
|
||||
RAW_REQUEST = [
|
||||
@ -126,8 +126,8 @@ def test_redirected_headers_multipart_no_separator():
|
||||
assert_output_matches(r, RAW_REQUEST)
|
||||
|
||||
|
||||
def test_verbose_chunked():
|
||||
r = http('--verbose', '--chunked', HTTPBIN_WITH_CHUNKED_SUPPORT + '/post', 'hello=world')
|
||||
def test_verbose_chunked(httpbin_with_chunked_support):
|
||||
r = http('--verbose', '--chunked', httpbin_with_chunked_support + '/post', 'hello=world')
|
||||
assert HTTP_OK in r
|
||||
assert 'Transfer-Encoding: chunked' in r
|
||||
assert_output_matches(r, TERMINAL_EXCHANGE)
|
||||
|
@ -6,17 +6,17 @@ from httpie.cli.exceptions import ParseError
|
||||
from httpie.client import FORM_CONTENT_TYPE
|
||||
from httpie.status import ExitStatus
|
||||
from .utils import (
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT, MockEnvironment, StdinBytesIO, http,
|
||||
MockEnvironment, StdinBytesIO, http,
|
||||
HTTP_OK,
|
||||
)
|
||||
from .fixtures import FILE_PATH_ARG, FILE_PATH, FILE_CONTENT
|
||||
|
||||
|
||||
def test_chunked_json():
|
||||
def test_chunked_json(httpbin_with_chunked_support):
|
||||
r = http(
|
||||
'--verbose',
|
||||
'--chunked',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
'hello=world',
|
||||
)
|
||||
assert HTTP_OK in r
|
||||
@ -24,12 +24,12 @@ def test_chunked_json():
|
||||
assert r.count('hello') == 3
|
||||
|
||||
|
||||
def test_chunked_form():
|
||||
def test_chunked_form(httpbin_with_chunked_support):
|
||||
r = http(
|
||||
'--verbose',
|
||||
'--chunked',
|
||||
'--form',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
'hello=world',
|
||||
)
|
||||
assert HTTP_OK in r
|
||||
@ -37,11 +37,11 @@ def test_chunked_form():
|
||||
assert r.count('hello') == 2
|
||||
|
||||
|
||||
def test_chunked_stdin():
|
||||
def test_chunked_stdin(httpbin_with_chunked_support):
|
||||
r = http(
|
||||
'--verbose',
|
||||
'--chunked',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
env=MockEnvironment(
|
||||
stdin=StdinBytesIO(FILE_PATH.read_bytes()),
|
||||
stdin_isatty=False,
|
||||
@ -52,12 +52,12 @@ def test_chunked_stdin():
|
||||
assert r.count(FILE_CONTENT) == 2
|
||||
|
||||
|
||||
def test_chunked_stdin_multiple_chunks():
|
||||
def test_chunked_stdin_multiple_chunks(httpbin_with_chunked_support):
|
||||
stdin_bytes = FILE_PATH.read_bytes() + b'\n' + FILE_PATH.read_bytes()
|
||||
r = http(
|
||||
'--verbose',
|
||||
'--chunked',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
env=MockEnvironment(
|
||||
stdin=StdinBytesIO(stdin_bytes),
|
||||
stdin_isatty=False,
|
||||
@ -182,12 +182,12 @@ class TestMultipartFormDataFileUpload:
|
||||
assert f'multipart/magic; boundary={boundary_in_header}' in r
|
||||
assert r.count(boundary_in_body) == 3
|
||||
|
||||
def test_multipart_chunked(self, httpbin):
|
||||
def test_multipart_chunked(self, httpbin_with_chunked_support):
|
||||
r = http(
|
||||
'--verbose',
|
||||
'--multipart',
|
||||
'--chunked',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
'AAA=AAA',
|
||||
)
|
||||
assert 'Transfer-Encoding: chunked' in r
|
||||
@ -231,10 +231,10 @@ class TestRequestBodyFromFilePath:
|
||||
assert r.count(FILE_CONTENT) == 2
|
||||
assert '"Content-Type": "text/plain"' in r
|
||||
|
||||
def test_request_body_from_file_by_path_chunked(self, httpbin):
|
||||
def test_request_body_from_file_by_path_chunked(self, httpbin_with_chunked_support):
|
||||
r = http(
|
||||
'--verbose', '--chunked',
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT + '/post',
|
||||
httpbin_with_chunked_support + '/post',
|
||||
'@' + FILE_PATH_ARG,
|
||||
)
|
||||
assert HTTP_OK in r
|
||||
|
@ -18,7 +18,8 @@ from httpie.core import main
|
||||
# pytest-httpbin currently does not support chunked requests:
|
||||
# <https://github.com/kevin1024/pytest-httpbin/issues/33>
|
||||
# <https://github.com/kevin1024/pytest-httpbin/issues/28>
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT = 'http://pie.dev'
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT_DOMAIN = 'pie.dev'
|
||||
HTTPBIN_WITH_CHUNKED_SUPPORT = 'http://' + HTTPBIN_WITH_CHUNKED_SUPPORT_DOMAIN
|
||||
|
||||
|
||||
TESTS_ROOT = Path(__file__).parent.parent
|
||||
|
Loading…
Reference in New Issue
Block a user