1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
import httplib2
import tests
def test_gzip_head():
# Test that we don't try to decompress a HEAD response
http = httplib2.Http()
response = tests.http_response_bytes(
headers={"content-encoding": "gzip", "content-length": 42}
)
with tests.server_const_bytes(response) as uri:
response, content = http.request(uri, "HEAD")
assert response.status == 200
assert int(response["content-length"]) != 0
assert content == b""
def test_gzip_get():
# Test that we support gzip compression
http = httplib2.Http()
response = tests.http_response_bytes(
headers={"content-encoding": "gzip"},
body=tests.gzip_compress(b"properly compressed"),
)
with tests.server_const_bytes(response) as uri:
response, content = http.request(uri, "GET")
assert response.status == 200
assert "content-encoding" not in response
assert "-content-encoding" in response
assert int(response["content-length"]) == len(b"properly compressed")
assert content == b"properly compressed"
def test_gzip_post_response():
http = httplib2.Http()
response = tests.http_response_bytes(
headers={"content-encoding": "gzip"},
body=tests.gzip_compress(b"properly compressed"),
)
with tests.server_const_bytes(response) as uri:
response, content = http.request(uri, "POST", body=b"")
assert response.status == 200
assert "content-encoding" not in response
assert "-content-encoding" in response
def test_gzip_malformed_response():
http = httplib2.Http()
# Test that we raise a good exception when the gzip fails
http.force_exception_to_status_code = False
response = tests.http_response_bytes(
headers={"content-encoding": "gzip"}, body=b"obviously not compressed"
)
with tests.server_const_bytes(response, request_count=2) as uri:
with tests.assert_raises(httplib2.FailedToDecompressContent):
http.request(uri, "GET")
# Re-run the test with out the exceptions
http.force_exception_to_status_code = True
response, content = http.request(uri, "GET")
assert response.status == 500
assert response.reason.startswith("Content purported")
def test_deflate_get():
# Test that we support deflate compression
http = httplib2.Http()
response = tests.http_response_bytes(
headers={"content-encoding": "deflate"},
body=tests.deflate_compress(b"properly compressed"),
)
with tests.server_const_bytes(response) as uri:
response, content = http.request(uri, "GET")
assert response.status == 200
assert "content-encoding" not in response
assert int(response["content-length"]) == len(b"properly compressed")
assert content == b"properly compressed"
def test_deflate_malformed_response():
# Test that we raise a good exception when the deflate fails
http = httplib2.Http()
http.force_exception_to_status_code = False
response = tests.http_response_bytes(
headers={"content-encoding": "deflate"}, body=b"obviously not compressed"
)
with tests.server_const_bytes(response, request_count=2) as uri:
with tests.assert_raises(httplib2.FailedToDecompressContent):
http.request(uri, "GET")
# Re-run the test with out the exceptions
http.force_exception_to_status_code = True
response, content = http.request(uri, "GET")
assert response.status == 500
assert response.reason.startswith("Content purported")
def test_zlib_get():
# Test that we support zlib compression
http = httplib2.Http()
response = tests.http_response_bytes(
headers={"content-encoding": "deflate"},
body=tests.zlib_compress(b"properly compressed"),
)
with tests.server_const_bytes(response) as uri:
response, content = http.request(uri, "GET")
assert response.status == 200
assert "content-encoding" not in response
assert int(response["content-length"]) == len(b"properly compressed")
assert content == b"properly compressed"
|