From acd51befbb89f28397f8e3e52ead5bfa11fdc93f Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Wed, 11 May 2016 11:13:57 -0600 Subject: minor fixes, adjust tests --- test/mitmproxy/scripts/tcp_stream_modify.py | 7 ++++--- test/mitmproxy/test_server.py | 8 ++++---- test/mitmproxy/tservers.py | 5 ++--- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'test') diff --git a/test/mitmproxy/scripts/tcp_stream_modify.py b/test/mitmproxy/scripts/tcp_stream_modify.py index 93b0d5c8..d7953ef9 100644 --- a/test/mitmproxy/scripts/tcp_stream_modify.py +++ b/test/mitmproxy/scripts/tcp_stream_modify.py @@ -1,3 +1,4 @@ -def tcp_message(ctx, tm): - if tm.sender == tm.server_conn: - tm.message = tm.message.replace("foo", "bar") +def tcp_message(ctx, flow): + message = flow.messages[-1] + if not message.from_client: + message.content = message.content.replace("foo", "bar") diff --git a/test/mitmproxy/test_server.py b/test/mitmproxy/test_server.py index 454736d4..0701d52b 100644 --- a/test/mitmproxy/test_server.py +++ b/test/mitmproxy/test_server.py @@ -14,7 +14,7 @@ from pathod import pathoc, pathod from mitmproxy.proxy.config import HostMatcher from mitmproxy.exceptions import Kill -from mitmproxy.models import Error, HTTPResponse +from mitmproxy.models import Error, HTTPResponse, HTTPFlow from . import tutils, tservers @@ -177,9 +177,9 @@ class TcpMixin: assert n.status_code == 304 assert i.status_code == 305 assert i2.status_code == 306 - assert any(f.response.status_code == 304 for f in self.master.state.flows) - assert not any(f.response.status_code == 305 for f in self.master.state.flows) - assert not any(f.response.status_code == 306 for f in self.master.state.flows) + assert any(f.response.status_code == 304 for f in self.master.state.flows if isinstance(f, HTTPFlow)) + assert not any(f.response.status_code == 305 for f in self.master.state.flows if isinstance(f, HTTPFlow)) + assert not any(f.response.status_code == 306 for f in self.master.state.flows if isinstance(f, HTTPFlow)) # Test that we get the original SSL cert if self.ssl: diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index 4fa519cc..c9d68cfd 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -50,9 +50,8 @@ class TestMaster(flow.FlowMaster): def clear_log(self): self.log = [] - def handle_log(self, l): - self.log.append(l.msg) - l.reply() + def add_event(self, message, level=None): + self.log.append(message) class ProxyThread(threading.Thread): -- cgit v1.2.3 From d3c30d9005e42a68cb3f5a5440f30f01f100cbec Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Wed, 11 May 2016 16:34:18 -0600 Subject: fix tests, don't double-add error'd flows --- test/mitmproxy/tservers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index c9d68cfd..a1e9c713 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -161,7 +161,9 @@ class HTTPProxyTest(ProxyTestBase): q = "get:'/p/%s'" % spec else: q = "get:'%s/p/%s'" % (self.server.urlbase, spec) - return p.request(q) + resp = p.request(q) + p.close() + return resp def app(self, page): if self.ssl: -- cgit v1.2.3 From d38989fe7e4aade0b7ea6c8c7d0de80c2b28ec81 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Thu, 12 May 2016 14:29:57 -0600 Subject: tests: finish connections properly --- test/mitmproxy/tservers.py | 1 + 1 file changed, 1 insertion(+) (limited to 'test') diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index a1e9c713..57225ee1 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -162,6 +162,7 @@ class HTTPProxyTest(ProxyTestBase): else: q = "get:'%s/p/%s'" % (self.server.urlbase, spec) resp = p.request(q) + p.finish() p.close() return resp -- cgit v1.2.3 From f96697646ca495ddc045ab18134b8f70052c86ff Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Thu, 19 May 2016 22:09:00 -0700 Subject: add FlowMaster.active_flows --- test/mitmproxy/tservers.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'test') diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index 57225ee1..c9d68cfd 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -161,10 +161,7 @@ class HTTPProxyTest(ProxyTestBase): q = "get:'/p/%s'" % spec else: q = "get:'%s/p/%s'" % (self.server.urlbase, spec) - resp = p.request(q) - p.finish() - p.close() - return resp + return p.request(q) def app(self, page): if self.ssl: -- cgit v1.2.3 From a3946d2a2d61a79f8f973c35f8321a37df3b8575 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Fri, 20 May 2016 13:27:26 -0700 Subject: tests++ --- test/mitmproxy/test_flow.py | 8 ++++++++ test/mitmproxy/tutils.py | 26 ++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py index b9c6a2f6..5c1e6a68 100644 --- a/test/mitmproxy/test_flow.py +++ b/test/mitmproxy/test_flow.py @@ -680,6 +680,10 @@ class TestSerialize: for i in range(3): f = tutils.tflow(err=True) w.add(f) + f = tutils.ttcpflow() + w.add(f) + f = tutils.ttcpflow(err=True) + w.add(f) sio.seek(0) return flow.FlowReader(sio) @@ -1205,6 +1209,10 @@ class TestError: e3 = e.copy() assert e3.get_state() == e.get_state() + def test_repr(self): + e = Error("yay") + assert repr(e) + class TestClientConnection: diff --git a/test/mitmproxy/tutils.py b/test/mitmproxy/tutils.py index d51ac185..270a3911 100644 --- a/test/mitmproxy/tutils.py +++ b/test/mitmproxy/tutils.py @@ -3,6 +3,8 @@ import shutil import tempfile import argparse import sys + +from mitmproxy.models.tcp import TCPMessage from six.moves import cStringIO as StringIO from contextlib import contextmanager @@ -11,7 +13,7 @@ from unittest.case import SkipTest import netlib.tutils from mitmproxy import utils, controller from mitmproxy.models import ( - ClientConnection, ServerConnection, Error, HTTPRequest, HTTPResponse, HTTPFlow + ClientConnection, ServerConnection, Error, HTTPRequest, HTTPResponse, HTTPFlow, TCPFlow ) @@ -44,6 +46,26 @@ def skip_appveyor(fn): return fn +def ttcpflow(client_conn=True, server_conn=True, messages=True, err=None): + if client_conn is True: + client_conn = tclient_conn() + if server_conn is True: + server_conn = tserver_conn() + if messages is True: + messages = [ + TCPMessage(True, b"hello"), + TCPMessage(False, b"it's me"), + ] + if err is True: + err = terr() + + f = TCPFlow(client_conn, server_conn) + f.messages = messages + f.error = err + f.reply = controller.DummyReply() + return f + + def tflow(client_conn=True, server_conn=True, req=True, resp=None, err=None): """ @type client_conn: bool | None | mitmproxy.proxy.connection.ClientConnection @@ -51,7 +73,7 @@ def tflow(client_conn=True, server_conn=True, req=True, resp=None, err=None): @type req: bool | None | mitmproxy.protocol.http.HTTPRequest @type resp: bool | None | mitmproxy.protocol.http.HTTPResponse @type err: bool | None | mitmproxy.protocol.primitives.Error - @return: bool | None | mitmproxy.protocol.http.HTTPFlow + @return: mitmproxy.protocol.http.HTTPFlow """ if client_conn is True: client_conn = tclient_conn() -- cgit v1.2.3 From 7a8da48a306dfc8e43239d7f2a141c465e40ab77 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Wed, 25 May 2016 19:16:02 -0700 Subject: escaped_str_to_bytes: support unicode on python 2 --- test/netlib/test_utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/netlib/test_utils.py b/test/netlib/test_utils.py index 1d8f7b0f..671ae66c 100644 --- a/test/netlib/test_utils.py +++ b/test/netlib/test_utils.py @@ -182,6 +182,9 @@ def test_bytes_to_escaped_str(): def test_escaped_str_to_bytes(): assert utils.escaped_str_to_bytes("foo") == b"foo" - assert utils.escaped_str_to_bytes(r"\x08") == b"\b" - assert utils.escaped_str_to_bytes(r"&!?=\\)") == br"&!?=\)" - assert utils.escaped_str_to_bytes(r"ü") == b'\xc3\xbc' + assert utils.escaped_str_to_bytes("\x08") == b"\b" + assert utils.escaped_str_to_bytes("&!?=\\\\)") == br"&!?=\)" + assert utils.escaped_str_to_bytes("ü") == b'\xc3\xbc' + assert utils.escaped_str_to_bytes(u"\\x08") == b"\b" + assert utils.escaped_str_to_bytes(u"&!?=\\\\)") == br"&!?=\)" + assert utils.escaped_str_to_bytes(u"ü") == b'\xc3\xbc' \ No newline at end of file -- cgit v1.2.3 From d3477e27fa4ffbcfa9c1b9aa937d1d54448cc597 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Wed, 25 May 2016 20:11:34 -0700 Subject: bytes_to_escaped_str: always escape single quotes --- test/netlib/test_utils.py | 2 ++ test/pathod/test_language_base.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/netlib/test_utils.py b/test/netlib/test_utils.py index 671ae66c..fce1d0a7 100644 --- a/test/netlib/test_utils.py +++ b/test/netlib/test_utils.py @@ -178,6 +178,8 @@ def test_bytes_to_escaped_str(): assert utils.bytes_to_escaped_str(b"\b") == r"\x08" assert utils.bytes_to_escaped_str(br"&!?=\)") == r"&!?=\\)" assert utils.bytes_to_escaped_str(b'\xc3\xbc') == r"\xc3\xbc" + assert utils.bytes_to_escaped_str(b"'") == r"\'" + assert utils.bytes_to_escaped_str(b'"') == r'"' def test_escaped_str_to_bytes(): diff --git a/test/pathod/test_language_base.py b/test/pathod/test_language_base.py index 64d4af1f..2e5d9041 100644 --- a/test/pathod/test_language_base.py +++ b/test/pathod/test_language_base.py @@ -67,7 +67,7 @@ class TestTokValueLiteral: def test_roundtrip(self): self.roundtrip("'") - self.roundtrip('\'') + self.roundtrip(r"\'") self.roundtrip("a") self.roundtrip("\"") # self.roundtrip("\\") -- cgit v1.2.3 From 22e4bc1938b74b0d0bfda7cab41b54070bcd7fb9 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 8 May 2016 16:20:27 +0530 Subject: Py3: Handle bytes case in inner_repr --- test/pathod/test_utils.py | 1 + 1 file changed, 1 insertion(+) (limited to 'test') diff --git a/test/pathod/test_utils.py b/test/pathod/test_utils.py index 4dcedf6e..4e891ad9 100644 --- a/test/pathod/test_utils.py +++ b/test/pathod/test_utils.py @@ -30,6 +30,7 @@ def test_data_path(): def test_inner_repr(): assert utils.inner_repr("\x66") == "\x66" assert utils.inner_repr(u"foo") == "foo" + assert utils.inner_repr(b"foo") == "foo" def test_escape_unprintables(): -- cgit v1.2.3 From 1bbb178b6a0ebd534b6b9f78299118496de6b92a Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Wed, 25 May 2016 16:42:46 +0530 Subject: Remove inner_repr, fixup escape_unprintables --- test/pathod/test_utils.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/pathod/test_utils.py b/test/pathod/test_utils.py index 4e891ad9..32ba3bdf 100644 --- a/test/pathod/test_utils.py +++ b/test/pathod/test_utils.py @@ -1,6 +1,8 @@ from pathod import utils import tutils +import six + def test_membool(): m = utils.MemBool() @@ -27,14 +29,8 @@ def test_data_path(): tutils.raises(ValueError, utils.data.path, "nonexistent") -def test_inner_repr(): - assert utils.inner_repr("\x66") == "\x66" - assert utils.inner_repr(u"foo") == "foo" - assert utils.inner_repr(b"foo") == "foo" - - def test_escape_unprintables(): s = "".join([chr(i) for i in range(255)]) - e = utils.escape_unprintables(s) + e = utils.escape_unprintables(six.b(s)) assert e.encode('ascii') - assert not "PATHOD_MARKER" in e + assert "PATHOD_MARKER" not in e -- cgit v1.2.3 From bc6cd13356a5181baafc9b01385a21991695ade3 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Thu, 26 May 2016 22:19:58 +0530 Subject: Go Python 3 by default with the bytes conversion --- test/pathod/test_utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/pathod/test_utils.py b/test/pathod/test_utils.py index 32ba3bdf..8026a576 100644 --- a/test/pathod/test_utils.py +++ b/test/pathod/test_utils.py @@ -30,7 +30,9 @@ def test_data_path(): def test_escape_unprintables(): - s = "".join([chr(i) for i in range(255)]) - e = utils.escape_unprintables(six.b(s)) + s = bytes(range(256)) + if six.PY2: + s = "".join([chr(i) for i in range(255)]) + e = utils.escape_unprintables(s) assert e.encode('ascii') assert "PATHOD_MARKER" not in e -- cgit v1.2.3