diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-11-05 10:10:59 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-11-12 11:58:04 +1300 |
commit | 82ac7d05a65f5bfd95a20112da09e2dc40960f07 (patch) | |
tree | e9b1e55595be05cdc69bd5e5aefb76bec3cb378c /test | |
parent | 53b77fc47580d110b02f1ea4bcdf7d0cf73fc4b2 (diff) | |
download | mitmproxy-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.py | 48 |
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 |