aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_dump.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-02-15 14:58:46 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-02-15 14:58:46 +0100
commit33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04 (patch)
tree31914a601302579ff817504019296fd7e9e46765 /test/test_dump.py
parent36f34f701991b5d474c005ec45e3b66e20f326a8 (diff)
downloadmitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.tar.gz
mitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.tar.bz2
mitmproxy-33fa49277a821b9d38e8c9bf0bcf2adcfa2f6f04.zip
move mitmproxy
Diffstat (limited to 'test/test_dump.py')
-rw-r--r--test/test_dump.py241
1 files changed, 0 insertions, 241 deletions
diff --git a/test/test_dump.py b/test/test_dump.py
deleted file mode 100644
index dbd0c653..00000000
--- a/test/test_dump.py
+++ /dev/null
@@ -1,241 +0,0 @@
-import os
-from cStringIO import StringIO
-from libmproxy.exceptions import ContentViewException
-from libmproxy.models import HTTPResponse
-
-import netlib.tutils
-from netlib.http import CONTENT_MISSING
-
-from libmproxy import dump, flow
-from libmproxy.proxy import Log
-from . import tutils
-import mock
-
-
-def test_strfuncs():
- o = dump.Options()
- m = dump.DumpMaster(None, o)
-
- m.outfile = StringIO()
- m.o.flow_detail = 0
- m.echo_flow(tutils.tflow())
- assert not m.outfile.getvalue()
-
- m.o.flow_detail = 4
- m.echo_flow(tutils.tflow())
- assert m.outfile.getvalue()
-
- m.outfile = StringIO()
- m.echo_flow(tutils.tflow(resp=True))
- assert "<<" in m.outfile.getvalue()
-
- m.outfile = StringIO()
- m.echo_flow(tutils.tflow(err=True))
- assert "<<" in m.outfile.getvalue()
-
- flow = tutils.tflow()
- flow.request = netlib.tutils.treq()
- flow.request.stickycookie = True
- flow.client_conn = mock.MagicMock()
- flow.client_conn.address.host = "foo"
- flow.response = netlib.tutils.tresp(content=CONTENT_MISSING)
- flow.response.is_replay = True
- flow.response.status_code = 300
- m.echo_flow(flow)
-
- flow = tutils.tflow(resp=netlib.tutils.tresp(content="{"))
- flow.response.headers["content-type"] = "application/json"
- flow.response.status_code = 400
- m.echo_flow(flow)
-
-
-@mock.patch("libmproxy.contentviews.get_content_view")
-def test_contentview(get_content_view):
- get_content_view.side_effect = ContentViewException(""), ("x", iter([]))
-
- o = dump.Options(flow_detail=4, verbosity=3)
- m = dump.DumpMaster(None, o, StringIO())
- m.echo_flow(tutils.tflow())
- assert "Content viewer failed" in m.outfile.getvalue()
-
-
-class TestDumpMaster:
-
- def _cycle(self, m, content):
- f = tutils.tflow(req=netlib.tutils.treq(content=content))
- l = Log("connect")
- l.reply = mock.MagicMock()
- m.handle_log(l)
- m.handle_clientconnect(f.client_conn)
- m.handle_serverconnect(f.server_conn)
- m.handle_request(f)
- f.response = HTTPResponse.wrap(netlib.tutils.tresp(content=content))
- f = m.handle_response(f)
- m.handle_clientdisconnect(f.client_conn)
- return f
-
- def _dummy_cycle(self, n, filt, content, **options):
- cs = StringIO()
- o = dump.Options(filtstr=filt, **options)
- m = dump.DumpMaster(None, o, outfile=cs)
- for i in range(n):
- self._cycle(m, content)
- m.shutdown()
- return cs.getvalue()
-
- def _flowfile(self, path):
- f = open(path, "wb")
- fw = flow.FlowWriter(f)
- t = tutils.tflow(resp=True)
- fw.add(t)
- f.close()
-
- def test_error(self):
- cs = StringIO()
- o = dump.Options(flow_detail=1)
- m = dump.DumpMaster(None, o, outfile=cs)
- f = tutils.tflow(err=True)
- m.handle_request(f)
- assert m.handle_error(f)
- assert "error" in cs.getvalue()
-
- def test_missing_content(self):
- cs = StringIO()
- o = dump.Options(flow_detail=3)
- m = dump.DumpMaster(None, o, outfile=cs)
- f = tutils.tflow()
- f.request.content = CONTENT_MISSING
- m.handle_request(f)
- f.response = HTTPResponse.wrap(netlib.tutils.tresp())
- f.response.content = CONTENT_MISSING
- m.handle_response(f)
- assert "content missing" in cs.getvalue()
-
- def test_replay(self):
- cs = StringIO()
-
- o = dump.Options(server_replay=["nonexistent"], kill=True)
- tutils.raises(dump.DumpError, dump.DumpMaster, None, o, outfile=cs)
-
- with tutils.tmpdir() as t:
- p = os.path.join(t, "rep")
- self._flowfile(p)
-
- o = dump.Options(server_replay=[p], kill=True)
- m = dump.DumpMaster(None, o, outfile=cs)
-
- self._cycle(m, "content")
- self._cycle(m, "content")
-
- o = dump.Options(server_replay=[p], kill=False)
- m = dump.DumpMaster(None, o, outfile=cs)
- self._cycle(m, "nonexistent")
-
- o = dump.Options(client_replay=[p], kill=False)
- m = dump.DumpMaster(None, o, outfile=cs)
-
- def test_read(self):
- with tutils.tmpdir() as t:
- p = os.path.join(t, "read")
- self._flowfile(p)
- assert "GET" in self._dummy_cycle(
- 0,
- None,
- "",
- flow_detail=1,
- rfile=p
- )
-
- tutils.raises(
- dump.DumpError, self._dummy_cycle,
- 0, None, "", verbosity=1, rfile="/nonexistent"
- )
- tutils.raises(
- dump.DumpError, self._dummy_cycle,
- 0, None, "", verbosity=1, rfile="test_dump.py"
- )
-
- def test_options(self):
- o = dump.Options(verbosity = 2)
- assert o.verbosity == 2
-
- def test_filter(self):
- assert not "GET" in self._dummy_cycle(1, "~u foo", "", verbosity=1)
-
- def test_app(self):
- o = dump.Options(app=True)
- s = mock.MagicMock()
- m = dump.DumpMaster(s, o)
- assert len(m.apps.apps) == 1
-
- def test_replacements(self):
- cs = StringIO()
- o = dump.Options(replacements=[(".*", "content", "foo")])
- m = dump.DumpMaster(None, o, outfile=cs)
- f = self._cycle(m, "content")
- assert f.request.content == "foo"
-
- def test_setheader(self):
- cs = StringIO()
- o = dump.Options(setheaders=[(".*", "one", "two")])
- m = dump.DumpMaster(None, o, outfile=cs)
- f = self._cycle(m, "content")
- assert f.request.headers["one"] == "two"
-
- def test_basic(self):
- for i in (1, 2, 3):
- assert "GET" in self._dummy_cycle(1, "~s", "", flow_detail=i)
- assert "GET" in self._dummy_cycle(
- 1,
- "~s",
- "\x00\x00\x00",
- flow_detail=i)
- assert "GET" in self._dummy_cycle(1, "~s", "ascii", flow_detail=i)
-
- def test_write(self):
- with tutils.tmpdir() as d:
- p = os.path.join(d, "a")
- self._dummy_cycle(1, None, "", outfile=(p, "wb"), verbosity=0)
- assert len(list(flow.FlowReader(open(p, "rb")).stream())) == 1
-
- def test_write_append(self):
- with tutils.tmpdir() as d:
- p = os.path.join(d, "a.append")
- self._dummy_cycle(1, None, "", outfile=(p, "wb"), verbosity=0)
- self._dummy_cycle(1, None, "", outfile=(p, "ab"), verbosity=0)
- assert len(list(flow.FlowReader(open(p, "rb")).stream())) == 2
-
- def test_write_err(self):
- tutils.raises(
- dump.DumpError,
- self._dummy_cycle,
- 1,
- None,
- "",
- outfile = ("nonexistentdir/foo", "wb")
- )
-
- def test_script(self):
- ret = self._dummy_cycle(
- 1, None, "",
- scripts=[tutils.test_data.path("scripts/all.py")], verbosity=1
- )
- assert "XCLIENTCONNECT" in ret
- assert "XSERVERCONNECT" in ret
- assert "XREQUEST" in ret
- assert "XRESPONSE" in ret
- assert "XCLIENTDISCONNECT" in ret
- tutils.raises(
- dump.DumpError,
- self._dummy_cycle, 1, None, "", scripts=["nonexistent"]
- )
- tutils.raises(
- dump.DumpError,
- self._dummy_cycle, 1, None, "", scripts=["starterr.py"]
- )
-
- def test_stickycookie(self):
- self._dummy_cycle(1, None, "", stickycookie = ".*")
-
- def test_stickyauth(self):
- self._dummy_cycle(1, None, "", stickyauth = ".*")