aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-11-03 12:44:19 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-11-03 12:44:19 +1300
commitfbdce4b629fe0e626818aafe81dc247f746d70cd (patch)
treef62b84d064924cb36c4872d0c69c6b8f4a8931f2
parent5109fd8ecb3e2b6b5c15ab07fc98d354c240b842 (diff)
downloadmitmproxy-fbdce4b629fe0e626818aafe81dc247f746d70cd.tar.gz
mitmproxy-fbdce4b629fe0e626818aafe81dc247f746d70cd.tar.bz2
mitmproxy-fbdce4b629fe0e626818aafe81dc247f746d70cd.zip
addons filstreamer: tests and bugfixes
- Move tests to taddons - Fix a bug where options updates caused streaming to halt
-rw-r--r--.gitignore1
-rw-r--r--mitmproxy/addons/filestreamer.py34
-rw-r--r--test/mitmproxy/addons/test_filestreamer.py38
3 files changed, 31 insertions, 42 deletions
diff --git a/.gitignore b/.gitignore
index e942ea94..def8186d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,4 @@ bower_components
*.map
sslkeylogfile.log
.tox/
+.vscode
diff --git a/mitmproxy/addons/filestreamer.py b/mitmproxy/addons/filestreamer.py
index 031b44ab..92224d21 100644
--- a/mitmproxy/addons/filestreamer.py
+++ b/mitmproxy/addons/filestreamer.py
@@ -21,23 +21,23 @@ class FileStreamer:
def configure(self, options, updated):
# We're already streaming - stop the previous stream and restart
- if self.stream:
- self.done()
-
- if options.outfile:
- flt = None
- if options.get("filtstr"):
- flt = flowfilter.parse(options.filtstr)
- if not flt:
- raise exceptions.OptionsError(
- "Invalid filter specification: %s" % options.filtstr
- )
- path, mode = options.outfile
- if mode not in ("wb", "ab"):
- raise exceptions.OptionsError("Invalid mode.")
- err = self.start_stream_to_path(path, mode, flt)
- if err:
- raise exceptions.OptionsError(err)
+ if "outfile" in updated:
+ if self.stream:
+ self.done()
+ if options.outfile:
+ flt = None
+ if options.get("filtstr"):
+ flt = flowfilter.parse(options.filtstr)
+ if not flt:
+ raise exceptions.OptionsError(
+ "Invalid filter specification: %s" % options.filtstr
+ )
+ path, mode = options.outfile
+ if mode not in ("wb", "ab"):
+ raise exceptions.OptionsError("Invalid mode.")
+ err = self.start_stream_to_path(path, mode, flt)
+ if err:
+ raise exceptions.OptionsError(err)
def tcp_start(self, flow):
if self.stream:
diff --git a/test/mitmproxy/addons/test_filestreamer.py b/test/mitmproxy/addons/test_filestreamer.py
index 28094c43..f86912fc 100644
--- a/test/mitmproxy/addons/test_filestreamer.py
+++ b/test/mitmproxy/addons/test_filestreamer.py
@@ -1,44 +1,32 @@
from mitmproxy.test import tflow
from mitmproxy.test import tutils
-
-from .. import mastertest
+from mitmproxy.test import taddons
import os.path
-
from mitmproxy.addons import filestreamer
-from mitmproxy import master
from mitmproxy import io
-from mitmproxy import options
-from mitmproxy import proxy
-class TestStream(mastertest.MasterTest):
- def test_stream(self):
+def test_stream():
+ sa = filestreamer.FileStreamer()
+ with taddons.context() as tctx:
with tutils.tmpdir() as tdir:
p = os.path.join(tdir, "foo")
def r():
- r = io.FlowReader(open(p, "rb"))
- return list(r.stream())
+ x = io.FlowReader(open(p, "rb"))
+ return list(x.stream())
- o = options.Options(
- outfile = (p, "wb")
- )
- m = master.Master(o, proxy.DummyServer())
- sa = filestreamer.FileStreamer()
+ tctx.configure(sa, outfile=(p, "wb"))
- m.addons.add(sa)
f = tflow.tflow(resp=True)
- m.request(f)
- m.response(f)
- m.addons.remove(sa)
-
+ sa.request(f)
+ sa.response(f)
+ tctx.configure(sa, outfile=None)
assert r()[0].response
- m.options.outfile = (p, "ab")
-
- m.addons.add(sa)
+ tctx.configure(sa, outfile=(p, "ab"))
f = tflow.tflow()
- m.request(f)
- m.addons.remove(sa)
+ sa.request(f)
+ tctx.configure(sa, outfile=None)
assert not r()[1].response