diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/mitmproxy/test_eventsequence.py | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/test/mitmproxy/test_eventsequence.py b/test/mitmproxy/test_eventsequence.py index 7fdbce1b..31c57e82 100644 --- a/test/mitmproxy/test_eventsequence.py +++ b/test/mitmproxy/test_eventsequence.py @@ -3,15 +3,17 @@ import contextlib from . import tservers -class EAddon: - def __init__(self, handlers): +class Eventer: + def __init__(self, **handlers): self.failure = None + self.called = [] self.handlers = handlers - for i in events.Events: + for i in events.Events - {"tick"}: def mkprox(): evt = i def prox(*args, **kwargs): + self.called.append(evt) if evt in self.handlers: try: handlers[evt](*args, **kwargs) @@ -26,23 +28,41 @@ class EAddon: class SequenceTester: @contextlib.contextmanager - def events(self, **kwargs): - m = EAddon(kwargs) - self.master.addons.add(m) + def addon(self, addon): + self.master.addons.add(addon) yield - self.master.addons.remove(m) - if m.failure: - raise m.failure + self.master.addons.remove(addon) + if addon.failure: + raise addon.failure class TestBasic(tservers.HTTPProxyTest, SequenceTester): def test_requestheaders(self): - def req(f): + def hdrs(f): assert f.request.headers assert not f.request.content - with self.events(requestheaders=req): + def req(f): + assert f.request.headers + assert f.request.content + + with self.addon(Eventer(requestheaders=hdrs, request=req)): p = self.pathoc() with p.connect(): assert p.request("get:'%s/p/200':b@10" % self.server.urlbase).status_code == 200 + + def test_100_continue_fail(self): + e = Eventer() + with self.addon(e): + p = self.pathoc() + with p.connect(): + p.request( + """ + get:'%s/p/200' + h'expect'='100-continue' + h'content-length'='1000' + da + """ % self.server.urlbase + ) + assert e.called[-1] == "requestheaders" |