From 0f7f4ba9499fcc7ccd2da2ed3cf43ccf85901b2f Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Sat, 31 Oct 2020 17:30:15 +0100 Subject: [PATCH] various trailer-related fixes --- mitmproxy/addons/dumper.py | 2 ++ test/individual_coverage.py | 5 ++++- test/mitmproxy/addons/test_dumper.py | 24 ++++++++++++++++-------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/mitmproxy/addons/dumper.py b/mitmproxy/addons/dumper.py index 3e3ff9d95..1d6ecc265 100644 --- a/mitmproxy/addons/dumper.py +++ b/mitmproxy/addons/dumper.py @@ -227,6 +227,8 @@ class Dumper: self._echo_headers(f.request.headers) if ctx.options.flow_detail >= 3: self._echo_message(f.request, f) + if ctx.options.flow_detail >= 2: + self._echo_trailers(f.request.trailers) if f.response: self._echo_response_line(f) diff --git a/test/individual_coverage.py b/test/individual_coverage.py index a77c3bd5c..0811b8d2a 100755 --- a/test/individual_coverage.py +++ b/test/individual_coverage.py @@ -26,9 +26,12 @@ def run_tests(src, test, fail): test ]) - if e == 0 and fail: + if e == 0: + if fail: print("FAIL DUE TO UNEXPECTED SUCCESS:", src, "Please remove this file from setup.cfg tool:individual_coverage/exclude.") e = 42 + else: + print(".") else: if fail: print("Ignoring allowed fail:", src) diff --git a/test/mitmproxy/addons/test_dumper.py b/test/mitmproxy/addons/test_dumper.py index 187656606..1b1508ddb 100644 --- a/test/mitmproxy/addons/test_dumper.py +++ b/test/mitmproxy/addons/test_dumper.py @@ -134,18 +134,26 @@ def test_echo_trailer(): with taddons.context(d) as ctx: ctx.configure(d, flow_detail=3) f = tflow.tflow(client_conn=True, server_conn=True, resp=True) - f.response.headers["content-type"] = "text/html" + + f.request.headers["content-type"] = "text/html" + f.request.headers["transfer-encoding"] = "chunked" + f.request.headers["trailer"] = "my-little-request-trailer" + f.request.content = b"some request content\n" * 100 + f.request.trailers = Headers([(b"my-little-request-trailer", b"foobar-request-trailer")]) + f.response.headers["transfer-encoding"] = "chunked" - f.response.headers["trailer"] = "my-little-trailer" - f.response.content = b"foo bar voing\n" * 100 - f.response.trailers = Headers([(b"my-little-trailer", b"foobar-trailer")]) - d._echo_headers(f.response.headers) - d._echo_message(f.response, f) - d._echo_headers(f.response.trailers) + f.response.headers["trailer"] = "my-little-response-trailer" + f.response.content = b"some response content\n" * 100 + f.response.trailers = Headers([(b"my-little-response-trailer", b"foobar-response-trailer")]) + + d.echo_flow(f) t = sio.getvalue() assert "content-type" in t assert "cut off" in t - assert "foobar-trailer" in t + assert "some request content" in t + assert "foobar-request-trailer" in t + assert "some response content" in t + assert "foobar-response-trailer" in t def test_echo_request_line():