addons.setheaders: fix configure bug, tests to taddons

This commit is contained in:
Aldo Cortesi 2016-11-04 09:09:39 +13:00
parent b51a96081a
commit deb66d3cac
2 changed files with 51 additions and 53 deletions

View File

@ -14,6 +14,8 @@ class SetHeaders:
header: Header name. header: Header name.
value: Header value string value: Header value string
""" """
if "setheaders" in updated:
self.lst = []
for fpatt, header, value in options.setheaders: for fpatt, header, value in options.setheaders:
flt = flowfilter.parse(fpatt) flt = flowfilter.parse(fpatt)
if not flt: if not flt:

View File

@ -1,21 +1,12 @@
from mitmproxy.test import tflow from mitmproxy.test import tflow
from mitmproxy.test import tutils from mitmproxy.test import tutils
from mitmproxy.test import taddons
from .. import mastertest
from mitmproxy.addons import setheaders from mitmproxy.addons import setheaders
from mitmproxy import options from mitmproxy import options
from mitmproxy import proxy
class TestSetHeaders(mastertest.MasterTest): class TestSetHeaders:
def mkmaster(self, **opts):
o = options.Options(**opts)
m = mastertest.RecordingMaster(o, proxy.DummyServer())
sh = setheaders.SetHeaders()
m.addons.add(sh)
return m, sh
def test_configure(self): def test_configure(self):
sh = setheaders.SetHeaders() sh = setheaders.SetHeaders()
o = options.Options( o = options.Options(
@ -27,7 +18,10 @@ class TestSetHeaders(mastertest.MasterTest):
) )
def test_setheaders(self): def test_setheaders(self):
m, sh = self.mkmaster( sh = setheaders.SetHeaders()
with taddons.context() as tctx:
tctx.configure(
sh,
setheaders = [ setheaders = [
("~q", "one", "two"), ("~q", "one", "two"),
("~s", "one", "three") ("~s", "one", "three")
@ -35,15 +29,16 @@ class TestSetHeaders(mastertest.MasterTest):
) )
f = tflow.tflow() f = tflow.tflow()
f.request.headers["one"] = "xxx" f.request.headers["one"] = "xxx"
m.request(f) sh.request(f)
assert f.request.headers["one"] == "two" assert f.request.headers["one"] == "two"
f = tflow.tflow(resp=True) f = tflow.tflow(resp=True)
f.response.headers["one"] = "xxx" f.response.headers["one"] = "xxx"
m.response(f) sh.response(f)
assert f.response.headers["one"] == "three" assert f.response.headers["one"] == "three"
m, sh = self.mkmaster( tctx.configure(
sh,
setheaders = [ setheaders = [
("~s", "one", "two"), ("~s", "one", "two"),
("~s", "one", "three") ("~s", "one", "three")
@ -52,10 +47,11 @@ class TestSetHeaders(mastertest.MasterTest):
f = tflow.tflow(resp=True) f = tflow.tflow(resp=True)
f.request.headers["one"] = "xxx" f.request.headers["one"] = "xxx"
f.response.headers["one"] = "xxx" f.response.headers["one"] = "xxx"
m.response(f) sh.response(f)
assert f.response.headers.get_all("one") == ["two", "three"] assert f.response.headers.get_all("one") == ["two", "three"]
m, sh = self.mkmaster( tctx.configure(
sh,
setheaders = [ setheaders = [
("~q", "one", "two"), ("~q", "one", "two"),
("~q", "one", "three") ("~q", "one", "three")
@ -63,5 +59,5 @@ class TestSetHeaders(mastertest.MasterTest):
) )
f = tflow.tflow() f = tflow.tflow()
f.request.headers["one"] = "xxx" f.request.headers["one"] = "xxx"
m.request(f) sh.request(f)
assert f.request.headers.get_all("one") == ["two", "three"] assert f.request.headers.get_all("one") == ["two", "three"]