mitmproxy/test/netlib/test_encoding.py
Maximilian Hils 6032c4f235 message.content -> .raw_content, implement .text
This PR improves our handling of HTTP message body encodings:

- The unaltered message body is now accessible as `.raw_content`
- The "content-encoding"-decoded content (i.e. gzip removed) content
  is not `.content`, as this is what we want in 99% of the cases.
- `.text` now provides the "content-encoding"-decoded and then
  "content-type charset"-decoded message body.
- The decoded values for `.content` and `.text` are cached,
  so that repeated access and `x.text = x.text` is cheap.
- The `decoded()` decorator is now deprecated, as we can now just use
  `.content`. Similarly `HTTPMessage.get_decoded_content()` is
  deprecated.
2016-07-02 01:51:47 -07:00

40 lines
918 B
Python

from netlib import encoding, tutils
def test_identity():
assert b"string" == encoding.decode(b"string", "identity")
assert b"string" == encoding.encode(b"string", "identity")
with tutils.raises(ValueError):
encoding.encode(b"string", "nonexistent encoding")
def test_gzip():
assert b"string" == encoding.decode(
encoding.encode(
b"string",
"gzip"
),
"gzip"
)
with tutils.raises(ValueError):
encoding.decode(b"bogus", "gzip")
def test_deflate():
assert b"string" == encoding.decode(
encoding.encode(
b"string",
"deflate"
),
"deflate"
)
assert b"string" == encoding.decode(
encoding.encode(
b"string",
"deflate"
)[2:-4],
"deflate"
)
with tutils.raises(ValueError):
encoding.decode(b"bogus", "deflate")