Skip http://pie.dev tests when offline (#1072)

This commit is contained in:
Miro Hrončok 2021-05-27 19:30:36 +02:00 committed by GitHub
parent fc7a349d36
commit 355befcbfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 17 deletions

View File

@ -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))

View File

@ -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)

View File

@ -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

View File

@ -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