diff --git a/mitmproxy/proxy/protocol/base.py b/mitmproxy/proxy/protocol/base.py index c535a1a38..936191717 100644 --- a/mitmproxy/proxy/protocol/base.py +++ b/mitmproxy/proxy/protocol/base.py @@ -74,16 +74,6 @@ class Layer(_LayerCodeCompletion): """ return getattr(self.ctx, name) - @property - def layers(self): - """ - List of all layers, including the current layer (``[self, self.ctx, self.ctx.ctx, ...]``) - """ - return [self] + self.ctx.layers - - def __repr__(self): - return type(self).__name__ - class ServerConnectionMixin: diff --git a/mitmproxy/proxy/root_context.py b/mitmproxy/proxy/root_context.py index f38f2a8c0..180fc9ca5 100644 --- a/mitmproxy/proxy/root_context.py +++ b/mitmproxy/proxy/root_context.py @@ -110,10 +110,3 @@ class RootContext: full_msg.append(" -> " + i) full_msg = "\n".join(full_msg) self.channel.tell("log", log.LogEntry(full_msg, level)) - - @property - def layers(self): - return [] - - def __repr__(self): - return "RootContext" diff --git a/test/mitmproxy/net/test_check.py b/test/mitmproxy/net/test_check.py index 36dca168e..9dbc02e02 100644 --- a/test/mitmproxy/net/test_check.py +++ b/test/mitmproxy/net/test_check.py @@ -5,6 +5,7 @@ from mitmproxy.net import check def test_is_valid_host(): assert not check.is_valid_host(b"") + assert not check.is_valid_host(b"xn--ke.ws") assert check.is_valid_host(b"one.two") assert not check.is_valid_host(b"one" * 255) assert check.is_valid_host(b"one.two.") diff --git a/test/mitmproxy/net/test_socks.py b/test/mitmproxy/net/test_socks.py index 9b746b927..c1bd0603e 100644 --- a/test/mitmproxy/net/test_socks.py +++ b/test/mitmproxy/net/test_socks.py @@ -179,6 +179,13 @@ def test_message_ipv6(): assert msg.addr.host == ipv6_addr +def test_message_invalid_host(): + raw = tutils.treader(b"\xEE\x01\x00\x03\x0bexample@com\xDE\xAD\xBE\xEF") + with pytest.raises(socks.SocksError) as exc_info: + socks.Message.from_file(raw) + assert exc_info.match("Invalid hostname: b'example@com'") + + def test_message_invalid_rsv(): raw = tutils.treader(b"\x05\x01\xFF\x01\x7f\x00\x00\x01\xDE\xAD\xBE\xEF") with pytest.raises(socks.SocksError): diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py index 102a714db..f546d61b2 100644 --- a/test/mitmproxy/test_flow.py +++ b/test/mitmproxy/test_flow.py @@ -251,8 +251,19 @@ class TestSerialize: sio.write(b"bogus") sio.seek(0) r = mitmproxy.io.FlowReader(sio) - with pytest.raises(FlowReadException): + with pytest.raises(FlowReadException) as exc_info: list(r.stream()) + assert exc_info.match('Invalid data format') + + sio = io.BytesIO() + f = tflow.tdummyflow() + w = mitmproxy.io.FlowWriter(sio) + w.add(f) + sio.seek(0) + r = mitmproxy.io.FlowReader(sio) + with pytest.raises(FlowReadException) as exc_info: + list(r.stream()) + assert exc_info.match('Unknown flow type') f = FlowReadException("foo") assert str(f) == "foo" diff --git a/test/mitmproxy/types/__init__.py b/test/mitmproxy/types/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/test/mitmproxy/types/test_basethread.py b/test/mitmproxy/types/test_basethread.py new file mode 100644 index 000000000..a91588ebb --- /dev/null +++ b/test/mitmproxy/types/test_basethread.py @@ -0,0 +1,7 @@ +import re +from mitmproxy.types import basethread + + +def test_basethread(): + t = basethread.BaseThread('foobar') + assert re.match('foobar - age: \d+s', t._threadinfo()) diff --git a/test/mitmproxy/test_types_bidi.py b/test/mitmproxy/types/test_bidi.py similarity index 100% rename from test/mitmproxy/test_types_bidi.py rename to test/mitmproxy/types/test_bidi.py diff --git a/test/mitmproxy/test_types_multidict.py b/test/mitmproxy/types/test_multidict.py similarity index 100% rename from test/mitmproxy/test_types_multidict.py rename to test/mitmproxy/types/test_multidict.py diff --git a/test/mitmproxy/test_types_serializable.py b/test/mitmproxy/types/test_serializable.py similarity index 100% rename from test/mitmproxy/test_types_serializable.py rename to test/mitmproxy/types/test_serializable.py diff --git a/tox.ini b/tox.ini index fafa7220f..a91f5d1ab 100644 --- a/tox.ini +++ b/tox.ini @@ -14,16 +14,17 @@ commands = pytest --timeout 60 --cov-report='' --cov=mitmproxy --cov=pathod \ --full-cov=mitmproxy/addons/ \ --full-cov=mitmproxy/contentviews/ --no-full-cov=mitmproxy/contentviews/__init__.py --no-full-cov=mitmproxy/contentviews/protobuf.py --no-full-cov=mitmproxy/contentviews/wbxml.py --no-full-cov=mitmproxy/contentviews/xml_html.py \ - --full-cov=mitmproxy/net/ --no-full-cov=mitmproxy/net/check.py --no-full-cov=mitmproxy/net/socks.py --no-full-cov=mitmproxy/net/tcp.py --no-full-cov=mitmproxy/net/http/cookies.py --no-full-cov=mitmproxy/net/http/encoding.py --no-full-cov=mitmproxy/net/http/message.py --no-full-cov=mitmproxy/net/http/request.py --no-full-cov=mitmproxy/net/http/response.py --no-full-cov=mitmproxy/net/http/url.py \ + --full-cov=mitmproxy/net/ --no-full-cov=mitmproxy/net/tcp.py --no-full-cov=mitmproxy/net/http/cookies.py --no-full-cov=mitmproxy/net/http/encoding.py --no-full-cov=mitmproxy/net/http/message.py --no-full-cov=mitmproxy/net/http/request.py --no-full-cov=mitmproxy/net/http/response.py --no-full-cov=mitmproxy/net/http/url.py \ --full-cov=mitmproxy/proxy/ --no-full-cov=mitmproxy/proxy/protocol/ --no-full-cov=mitmproxy/proxy/config.py --no-full-cov=mitmproxy/proxy/root_context.py --no-full-cov=mitmproxy/proxy/server.py \ --full-cov=mitmproxy/script/ \ --full-cov=mitmproxy/test/ \ - --full-cov=mitmproxy/types/ --no-full-cov=mitmproxy/types/basethread.py \ + --full-cov=mitmproxy/types/ \ --full-cov=mitmproxy/utils/ \ --full-cov=mitmproxy/__init__.py \ --full-cov=mitmproxy/addonmanager.py \ --full-cov=mitmproxy/ctx.py \ --full-cov=mitmproxy/exceptions.py \ + --full-cov=mitmproxy/io.py \ --full-cov=mitmproxy/log.py \ --full-cov=mitmproxy/options.py \ --full-cov=pathod/ --no-full-cov=pathod/pathoc.py --no-full-cov=pathod/pathod.py --no-full-cov=pathod/test.py --no-full-cov=pathod/protocols/http2.py \