aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-11-05 10:10:59 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-11-12 11:58:04 +1300
commit82ac7d05a65f5bfd95a20112da09e2dc40960f07 (patch)
treee9b1e55595be05cdc69bd5e5aefb76bec3cb378c /test
parent53b77fc47580d110b02f1ea4bcdf7d0cf73fc4b2 (diff)
downloadmitmproxy-82ac7d05a65f5bfd95a20112da09e2dc40960f07.tar.gz
mitmproxy-82ac7d05a65f5bfd95a20112da09e2dc40960f07.tar.bz2
mitmproxy-82ac7d05a65f5bfd95a20112da09e2dc40960f07.zip
Bug: ask requestheaders before request body is read
Also add the beginnings of a test suite to exercise issues like this.
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/test_eventsequence.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/mitmproxy/test_eventsequence.py b/test/mitmproxy/test_eventsequence.py
new file mode 100644
index 00000000..7fdbce1b
--- /dev/null
+++ b/test/mitmproxy/test_eventsequence.py
@@ -0,0 +1,48 @@
+from mitmproxy import events
+import contextlib
+from . import tservers
+
+
+class EAddon:
+ def __init__(self, handlers):
+ self.failure = None
+ self.handlers = handlers
+ for i in events.Events:
+ def mkprox():
+ evt = i
+
+ def prox(*args, **kwargs):
+ if evt in self.handlers:
+ try:
+ handlers[evt](*args, **kwargs)
+ except AssertionError as e:
+ self.failure = e
+ return prox
+ setattr(self, i, mkprox())
+
+ def fail(self):
+ pass
+
+
+class SequenceTester:
+ @contextlib.contextmanager
+ def events(self, **kwargs):
+ m = EAddon(kwargs)
+ self.master.addons.add(m)
+ yield
+ self.master.addons.remove(m)
+ if m.failure:
+ raise m.failure
+
+
+class TestBasic(tservers.HTTPProxyTest, SequenceTester):
+ def test_requestheaders(self):
+
+ def req(f):
+ assert f.request.headers
+ assert not f.request.content
+
+ with self.events(requestheaders=req):
+ p = self.pathoc()
+ with p.connect():
+ assert p.request("get:'%s/p/200':b@10" % self.server.urlbase).status_code == 200