diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-08-02 16:52:47 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-08-02 16:52:47 +1200 |
commit | 1ff6a767d001a8c0f45a190e26be363ea9410534 (patch) | |
tree | ca511b918637e306140be6318dab05037ed4beda /test | |
parent | 357502fe03a5f86c1c29d35c5d607541df157640 (diff) | |
download | mitmproxy-1ff6a767d001a8c0f45a190e26be363ea9410534.tar.gz mitmproxy-1ff6a767d001a8c0f45a190e26be363ea9410534.tar.bz2 mitmproxy-1ff6a767d001a8c0f45a190e26be363ea9410534.zip |
Unit test++
Diffstat (limited to 'test')
-rw-r--r-- | test/test_dump.py | 60 | ||||
-rw-r--r-- | test/test_flow.py | 23 | ||||
-rw-r--r-- | test/test_utils.py | 7 |
3 files changed, 69 insertions, 21 deletions
diff --git a/test/test_dump.py b/test/test_dump.py index 95e7a98c..3abbad6d 100644 --- a/test/test_dump.py +++ b/test/test_dump.py @@ -22,6 +22,7 @@ class uDumpMaster(libpry.AutoTree): req = tutils.treq() req.content = content cc = req.client_conn + cc.connection_error = "error" resp = tutils.tresp(req) resp.content = content m.handle_clientconnect(cc) @@ -29,13 +30,22 @@ class uDumpMaster(libpry.AutoTree): m.handle_response(resp) m.handle_clientdisconnect(proxy.ClientDisconnect(cc)) - def _dummy_cycle(self, filt, content, **options): + def _dummy_cycle(self, n, filt, content, **options): cs = StringIO() o = dump.Options(**options) m = dump.DumpMaster(None, o, filt, outfile=cs) - self._cycle(m, content) + for i in range(n): + self._cycle(m, content) return cs.getvalue() + def _flowfile(self, path): + f = open(path, "w") + fw = flow.FlowWriter(f) + t = tutils.tflow_full() + t.response = tutils.tresp(t.request) + fw.add(t) + f.close() + def test_replay(self): cs = StringIO() @@ -44,12 +54,7 @@ class uDumpMaster(libpry.AutoTree): t = self.tmpdir() p = os.path.join(t, "rep") - f = open(p, "w") - fw = flow.FlowWriter(f) - t = tutils.tflow_full() - t.response = tutils.tresp(t.request) - fw.add(t) - f.close() + self._flowfile(p) o = dump.Options(server_replay=p, kill=True) m = dump.DumpMaster(None, o, None, outfile=cs) @@ -64,66 +69,79 @@ class uDumpMaster(libpry.AutoTree): o = dump.Options(client_replay=p, kill=False) m = dump.DumpMaster(None, o, None, outfile=cs) + def test_read(self): + cs = StringIO() + t = self.tmpdir() + p = os.path.join(t, "read") + self._flowfile(p) + assert "GET" in self._dummy_cycle(0, None, "", verbosity=1, rfile=p) + + libpry.raises( + dump.DumpError, self._dummy_cycle, + 0, None, "", verbosity=1, rfile="/nonexistent" + ) + def test_options(self): o = dump.Options(verbosity = 2) assert o.verbosity == 2 libpry.raises(AttributeError, dump.Options, nonexistent = 2) def test_filter(self): - assert not "GET" in self._dummy_cycle("~u foo", "", verbosity=1) + assert not "GET" in self._dummy_cycle(1, "~u foo", "", verbosity=1) def test_basic(self): for i in (1, 2, 3): - assert "GET" in self._dummy_cycle("~s", "", verbosity=i, eventlog=True) - assert "GET" in self._dummy_cycle("~s", "\x00\x00\x00", verbosity=i) - assert "GET" in self._dummy_cycle("~s", "ascii", verbosity=i) + assert "GET" in self._dummy_cycle(1, "~s", "", verbosity=i, eventlog=True) + assert "GET" in self._dummy_cycle(1, "~s", "\x00\x00\x00", verbosity=i) + assert "GET" in self._dummy_cycle(1, "~s", "ascii", verbosity=i) def test_write(self): d = self.tmpdir() p = os.path.join(d, "a") - self._dummy_cycle(None, "", wfile=p, verbosity=0) + self._dummy_cycle(1, None, "", wfile=p, verbosity=0) assert len(list(flow.FlowReader(open(p)).stream())) == 1 def test_write_err(self): libpry.raises( dump.DumpError, self._dummy_cycle, + 1, None, "", wfile = "nonexistentdir/foo" ) def test_request_script(self): - ret = self._dummy_cycle(None, "", request_script="scripts/a", verbosity=1) + ret = self._dummy_cycle(1, None, "", request_script="scripts/a", verbosity=1) assert "TESTOK" in ret assert "DEBUG" in ret libpry.raises( dump.DumpError, - self._dummy_cycle, None, "", request_script="nonexistent" + self._dummy_cycle, 1, None, "", request_script="nonexistent" ) libpry.raises( dump.DumpError, - self._dummy_cycle, None, "", request_script="scripts/err_return" + self._dummy_cycle, 1, None, "", request_script="scripts/err_return" ) def test_response_script(self): - ret = self._dummy_cycle(None, "", response_script="scripts/a", verbosity=1) + ret = self._dummy_cycle(1, None, "", response_script="scripts/a", verbosity=1) assert "TESTOK" in ret assert "DEBUG" in ret libpry.raises( dump.DumpError, - self._dummy_cycle, None, "", response_script="nonexistent" + self._dummy_cycle, 1, None, "", response_script="nonexistent" ) libpry.raises( dump.DumpError, - self._dummy_cycle, None, "", response_script="scripts/err_return" + self._dummy_cycle, 1, None, "", response_script="scripts/err_return" ) def test_stickycookie(self): - ret = self._dummy_cycle(None, "", stickycookie = ".*") + ret = self._dummy_cycle(1, None, "", stickycookie = ".*") def test_stickyauth(self): - ret = self._dummy_cycle(None, "", stickyauth = ".*") + ret = self._dummy_cycle(1, None, "", stickyauth = ".*") diff --git a/test/test_flow.py b/test/test_flow.py index 2e1975d9..6e1de9af 100644 --- a/test/test_flow.py +++ b/test/test_flow.py @@ -200,6 +200,22 @@ class uFlow(libpry.AutoTree): f.kill(fm) assert f.response.acked + def test_killall(self): + s = flow.State() + fm = flow.FlowMaster(None, s) + + r = tutils.treq() + fm.handle_request(r) + + r = tutils.treq() + fm.handle_request(r) + + for i in s.view: + assert not i.request.acked + s.killall(fm) + for i in s.view: + assert i.request.acked + def test_accept_intercept(self): f = tutils.tflow() f.request = tutils.treq() @@ -234,6 +250,10 @@ class uFlow(libpry.AutoTree): assert f.response.headers["bar"] == ["bar"] assert f.response.content == "abarb" + f = tutils.tflow_err() + f.replace("error", "bar") + assert f.error.msg == "bar" + class uState(libpry.AutoTree): def test_backup(self): @@ -294,6 +314,7 @@ class uState(libpry.AutoTree): e = proxy.Error(tutils.tflow().request, "message") assert not c.add_error(e) + def test_set_limit(self): c = flow.State() @@ -304,6 +325,7 @@ class uState(libpry.AutoTree): assert len(c.view) == 1 c.set_limit("~s") + assert c.limit_txt == "~s" assert len(c.view) == 0 resp = tutils.tresp(req) c.add_response(resp) @@ -447,6 +469,7 @@ class uFlowMaster(libpry.AutoTree): assert not fm.handle_response(rx) dc = proxy.ClientDisconnect(req.client_conn) + fm.handle_clientdisconnect(dc) err = proxy.Error(f.request, "msg") fm.handle_error(err) diff --git a/test/test_utils.py b/test/test_utils.py index 06e5fed3..0f543e72 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -29,6 +29,12 @@ class uhexdump(libpry.AutoTree): def test_simple(self): assert utils.hexdump("one\0"*10) +class udel_all(libpry.AutoTree): + def test_simple(self): + d = dict(a=1, b=2, c=3) + utils.del_all(d, ["a", "x", "b"]) + assert d.keys() == ["c"] + class upretty_size(libpry.AutoTree): def test_simple(self): @@ -300,6 +306,7 @@ tests = [ upretty_xmlish(), upretty_json(), u_urldecode(), + udel_all(), udummy_ca(), udummy_cert(), uLRUCache(), |