diff options
-rw-r--r-- | examples/__init__.py | 0 | ||||
-rw-r--r-- | test/mitmproxy/test_examples.py | 94 |
2 files changed, 50 insertions, 44 deletions
diff --git a/examples/__init__.py b/examples/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/examples/__init__.py +++ /dev/null diff --git a/test/mitmproxy/test_examples.py b/test/mitmproxy/test_examples.py index 3244ebf2..a6fed38b 100644 --- a/test/mitmproxy/test_examples.py +++ b/test/mitmproxy/test_examples.py @@ -2,7 +2,7 @@ import glob import os from contextlib import contextmanager -from mitmproxy import utils, script +from mitmproxy import utils, script, contentviews from mitmproxy.proxy import config from netlib import tutils as netutils from netlib.http import Headers @@ -11,24 +11,25 @@ from . import tservers, tutils example_dir = utils.Data(__name__).path("../../examples") +class DummyContext(object): + """Emulate script.ScriptContext() functionality.""" + + def log(self, *args, **kwargs): + pass + + def add_contentview(self, view_obj): + pass + + @contextmanager def example(command): command = os.path.join(example_dir, command) - # tmaster = tservers.TestMaster(config.ProxyConfig()) - # ctx = script.ScriptContext(tmaster) ctx = DummyContext() s = script.Script(command, ctx) yield s s.unload() -class DummyContext(object): - """Emulate script.ScriptContext() functionality.""" - - def log(self, *args, **kwargs): - pass - - def test_load_scripts(): scripts = glob.glob("%s/*.py" % example_dir) @@ -56,55 +57,60 @@ def test_load_scripts(): def test_add_header(): flow = tutils.tflow(resp=netutils.tresp()) - add_header.response({}, flow) - assert flow.response.headers["newheader"] == "foo" + with example("add_header.py") as ex: + ex.run("response", flow) + assert flow.response.headers["newheader"] == "foo" + + +def test_custom_contentviews(): + with example("custom_contentviews.py"): + pig = contentviews.get_by_shortcut("l") + _, fmt = pig("<html>test!</html>") + assert any('esttay!' in val[0][1] for val in fmt) + assert not pig("gobbledygook") + + +def test_iframe_injector(): + with tutils.raises(script.ScriptException): + with example("iframe_injector.py") as ex: + pass + + flow = tutils.tflow(resp=netutils.tresp(content="<html>mitmproxy</html>")) + with example("iframe_injector.py http://example.org/evil_iframe") as ex: + ex.run("response", flow) + content = flow.response.content + assert 'iframe' in content and 'evil_iframe' in content def test_modify_form(): form_header = Headers(content_type="application/x-www-form-urlencoded") flow = tutils.tflow(req=netutils.treq(headers=form_header)) - modify_form.request({}, flow) - assert flow.request.urlencoded_form["mitmproxy"] == ["rocks"] + with example("modify_form.py") as ex: + ex.run("request", flow) + assert flow.request.urlencoded_form["mitmproxy"] == ["rocks"] def test_modify_querystring(): flow = tutils.tflow(req=netutils.treq(path="/search?q=term")) - modify_querystring.request({}, flow) - assert flow.request.query["mitmproxy"] == ["rocks"] + with example("modify_querystring.py") as ex: + ex.run("request", flow) + assert flow.request.query["mitmproxy"] == ["rocks"] def test_modify_response_body(): - ctx = DummyContext() - tutils.raises(ValueError, modify_response_body.start, ctx, []) - - modify_response_body.start(ctx, ["modify-response-body.py", "mitmproxy", "rocks"]) - assert ctx.old == "mitmproxy" and ctx.new == "rocks" + with tutils.raises(script.ScriptException): + with example("modify_response_body.py") as ex: + pass flow = tutils.tflow(resp=netutils.tresp(content="I <3 mitmproxy")) - modify_response_body.response(ctx, flow) - assert flow.response.content == "I <3 rocks" - - -def test_custom_contentviews(): - pig = custom_contentviews.ViewPigLatin() - _, fmt = pig("<html>test!</html>") - assert any('esttay!' in val[0][1] for val in fmt) - assert not pig("gobbledygook") - - -def test_iframe_injector(): - ctx = DummyContext() - tutils.raises(ValueError, iframe_injector.start, ctx, []) - - flow = tutils.tflow(resp=netutils.tresp(content="<html>Kungfu Panda 3</html>")) - ctx.iframe_url = "http://example.org/evil_iframe" - iframe_injector.response(ctx, flow) - - content = flow.response.content - assert 'iframe' in content and ctx.iframe_url in content + with example("modify_response_body.py mitmproxy rocks") as ex: + assert ex.ctx.old == "mitmproxy" and ex.ctx.new == "rocks" + ex.run("response", flow) + assert flow.response.content == "I <3 rocks" def test_redirect_requests(): flow = tutils.tflow(req=netutils.treq(host="example.org")) - redirect_requests.request({}, flow) - assert flow.request.host == "mitmproxy.org" + with example("redirect_requests.py") as ex: + ex.run("request", flow) + assert flow.request.host == "mitmproxy.org" |