diff options
| author | Aldo Cortesi <aldo@nullcube.com> | 2011-08-03 16:36:20 +1200 | 
|---|---|---|
| committer | Aldo Cortesi <aldo@nullcube.com> | 2011-08-03 16:36:20 +1200 | 
| commit | 179cf758624152a4988e04a767759cb15b9c358a (patch) | |
| tree | 6e9351565b9241c9f8d751418cae93cd012d0550 /test | |
| parent | f7e4e89b124e0bc20cf8192227add04bd92846ae (diff) | |
| download | mitmproxy-179cf758624152a4988e04a767759cb15b9c358a.tar.gz mitmproxy-179cf758624152a4988e04a767759cb15b9c358a.tar.bz2 mitmproxy-179cf758624152a4988e04a767759cb15b9c358a.zip  | |
Add script hooks, enable new engine for mitmdump.
Diffstat (limited to 'test')
| -rw-r--r-- | test/scripts/all.py | 20 | ||||
| -rw-r--r-- | test/scripts/starterr.py | 3 | ||||
| -rw-r--r-- | test/test_dump.py | 28 | ||||
| -rw-r--r-- | test/test_flow.py | 36 | ||||
| -rw-r--r-- | test/test_script.py | 12 | 
5 files changed, 68 insertions, 31 deletions
diff --git a/test/scripts/all.py b/test/scripts/all.py new file mode 100644 index 00000000..e6da7e51 --- /dev/null +++ b/test/scripts/all.py @@ -0,0 +1,20 @@ +log = [] +def clientconnect(ctx, cc): +    ctx.log("XCLIENTCONNECT") +    log.append("clientconnect") + +def request(ctx, r): +    ctx.log("XREQUEST") +    log.append("request") + +def response(ctx, r): +    ctx.log("XRESPONSE") +    log.append("response") + +def clientdisconnect(ctx, cc): +    ctx.log("XCLIENTDISCONNECT") +    log.append("clientdisconnect") + +def error(ctx, cc): +    ctx.log("XERROR") +    log.append("error") diff --git a/test/scripts/starterr.py b/test/scripts/starterr.py new file mode 100644 index 00000000..456fecc0 --- /dev/null +++ b/test/scripts/starterr.py @@ -0,0 +1,3 @@ + +def start(ctx): +    raise ValueError diff --git a/test/test_dump.py b/test/test_dump.py index 3abbad6d..9a35772d 100644 --- a/test/test_dump.py +++ b/test/test_dump.py @@ -111,30 +111,22 @@ class uDumpMaster(libpry.AutoTree):              wfile = "nonexistentdir/foo"          ) -    def test_request_script(self): -        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, 1, None, "", request_script="nonexistent" -        ) -        libpry.raises( -            dump.DumpError, -            self._dummy_cycle, 1, None, "", request_script="scripts/err_return" +    def test_script(self): +        ret = self._dummy_cycle( +            1, None, "", +            script="scripts/all.py", verbosity=0, eventlog=True          ) - -    def test_response_script(self): -        ret = self._dummy_cycle(1, None, "", response_script="scripts/a", verbosity=1) -        assert "TESTOK" in ret -        assert "DEBUG" in ret +        assert "XCLIENTCONNECT" in ret +        assert "XREQUEST" in ret +        assert "XRESPONSE" in ret +        assert "XCLIENTDISCONNECT" in ret          libpry.raises(              dump.DumpError, -            self._dummy_cycle, 1, None, "", response_script="nonexistent" +            self._dummy_cycle, 1, None, "", script="nonexistent"          )          libpry.raises(              dump.DumpError, -            self._dummy_cycle, 1, None, "", response_script="scripts/err_return" +            self._dummy_cycle, 1, None, "", script="starterr.py"          )      def test_stickycookie(self): diff --git a/test/test_flow.py b/test/test_flow.py index 6e1de9af..45aee311 100644 --- a/test/test_flow.py +++ b/test/test_flow.py @@ -138,15 +138,6 @@ class uFlow(libpry.AutoTree):          assert "DEBUG" == se.strip()          assert f.request.host == "TESTOK" -    def test_run_script_err(self): -        f = tutils.tflow() -        f.response = tutils.tresp() -        f.request = f.response.request -        libpry.raises("returned error", f.run_script,"scripts/err_return") -        libpry.raises("invalid response", f.run_script,"scripts/err_data") -        libpry.raises("no such file", f.run_script,"nonexistent") -        libpry.raises("permission denied", f.run_script,"scripts/nonexecutable") -      def test_match(self):          f = tutils.tflow()          f.response = tutils.tresp() @@ -449,13 +440,38 @@ class uSerialize(libpry.AutoTree):  class uFlowMaster(libpry.AutoTree): +    def test_load_script(self): +        s = flow.State() +        fm = flow.FlowMaster(None, s) +        assert not fm.load_script("scripts/a.py") +        assert fm.load_script("nonexistent") +        assert "ValueError" in fm.load_script("scripts/starterr.py") + +    def test_script(self): +        s = flow.State() +        fm = flow.FlowMaster(None, s) +        assert not fm.load_script("scripts/all.py") +        req = tutils.treq() +        fm.handle_clientconnect(req.client_conn) +        assert fm.script.ns["log"][-1] == "clientconnect" +        f = fm.handle_request(req) +        assert fm.script.ns["log"][-1] == "request" +        resp = tutils.tresp(req) +        fm.handle_response(resp) +        assert fm.script.ns["log"][-1] == "response" +        dc = proxy.ClientDisconnect(req.client_conn) +        fm.handle_clientdisconnect(dc) +        assert fm.script.ns["log"][-1] == "clientdisconnect" +        err = proxy.Error(f.request, "msg") +        fm.handle_error(err) +        assert fm.script.ns["log"][-1] == "error" +      def test_all(self):          s = flow.State()          fm = flow.FlowMaster(None, s)          fm.anticache = True          fm.anticomp = True          req = tutils.treq() -          fm.handle_clientconnect(req.client_conn)          f = fm.handle_request(req) diff --git a/test/test_script.py b/test/test_script.py index f6cfcced..9a1c3062 100644 --- a/test/test_script.py +++ b/test/test_script.py @@ -27,17 +27,23 @@ class uScript(libpry.AutoTree):          s = script.Script("nonexistent", fm)          libpry.raises( -            script.ScriptError, +            "no such file", +            s.load +        ) + +        s = script.Script("scripts", fm) +        libpry.raises( +            "not a file",              s.load          ) -        s = script.Script(os.path.join("scripts", "syntaxerr.py"), fm) +        s = script.Script("scripts/syntaxerr.py", fm)          libpry.raises(              script.ScriptError,              s.load          ) -        s = script.Script(os.path.join("scripts", "loaderr.py"), fm) +        s = script.Script("scripts/loaderr.py", fm)          libpry.raises(              script.ScriptError,              s.load  | 
