aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2016-07-16 18:57:41 +1200
committerGitHub <noreply@github.com>2016-07-16 18:57:41 +1200
commit903807292b42b2481a3d72d6dbdc72939fc39b01 (patch)
tree67ddc039e51fbfab1120bac7d40603d00db3dbb3 /test
parent17305643bc482c0b185eec5c64d506790cd26587 (diff)
parent1a1f7e6fd94b434c4440d3cbc9407dbe3e0db6f9 (diff)
downloadmitmproxy-903807292b42b2481a3d72d6dbdc72939fc39b01.tar.gz
mitmproxy-903807292b42b2481a3d72d6dbdc72939fc39b01.tar.bz2
mitmproxy-903807292b42b2481a3d72d6dbdc72939fc39b01.zip
Merge pull request #1363 from cortesi/replace
replacehooks -> addon
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/builtins/test_replace.py52
-rw-r--r--test/mitmproxy/test_flow.py49
-rw-r--r--test/mitmproxy/test_server.py17
-rw-r--r--test/mitmproxy/tservers.py5
4 files changed, 62 insertions, 61 deletions
diff --git a/test/mitmproxy/builtins/test_replace.py b/test/mitmproxy/builtins/test_replace.py
new file mode 100644
index 00000000..f8010bec
--- /dev/null
+++ b/test/mitmproxy/builtins/test_replace.py
@@ -0,0 +1,52 @@
+from .. import tutils, mastertest
+from mitmproxy.builtins import replace
+from mitmproxy.flow import master
+from mitmproxy.flow import state
+from mitmproxy.flow import options
+
+
+class TestReplace(mastertest.MasterTest):
+ def test_configure(self):
+ r = replace.Replace()
+ r.configure(options.Options(
+ replacements=[("one", "two", "three")]
+ ))
+ tutils.raises(
+ "invalid filter pattern",
+ r.configure,
+ options.Options(
+ replacements=[("~b", "two", "three")]
+ )
+ )
+ tutils.raises(
+ "invalid regular expression",
+ r.configure,
+ options.Options(
+ replacements=[("foo", "+", "three")]
+ )
+ )
+
+ def test_simple(self):
+ s = state.State()
+ m = master.FlowMaster(
+ options.Options(
+ replacements = [
+ ("~q", "foo", "bar"),
+ ("~s", "foo", "bar"),
+ ]
+ ),
+ None,
+ s
+ )
+ sa = replace.Replace()
+ m.addons.add(sa)
+
+ f = tutils.tflow()
+ f.request.content = b"foo"
+ self.invoke(m, "request", f)
+ assert f.request.content == b"bar"
+
+ f = tutils.tflow(resp=True)
+ f.response.content = b"foo"
+ self.invoke(m, "response", f)
+ assert f.response.content == b"bar"
diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py
index c58a9703..8197ba08 100644
--- a/test/mitmproxy/test_flow.py
+++ b/test/mitmproxy/test_flow.py
@@ -959,55 +959,6 @@ class TestClientConnection:
assert str(c)
-def test_replacehooks():
- h = flow.ReplaceHooks()
- h.add("~q", "foo", "bar")
- assert h.lst
-
- h.set(
- [
- (".*", "one", "two"),
- (".*", "three", "four"),
- ]
- )
- assert h.count() == 2
-
- h.clear()
- assert not h.lst
-
- h.add("~q", "foo", "bar")
- h.add("~s", "foo", "bar")
-
- v = h.get_specs()
- assert v == [('~q', 'foo', 'bar'), ('~s', 'foo', 'bar')]
- assert h.count() == 2
- h.clear()
- assert h.count() == 0
-
- f = tutils.tflow()
- f.request.content = b"foo"
- h.add("~s", "foo", "bar")
- h.run(f)
- assert f.request.content == b"foo"
-
- f = tutils.tflow(resp=True)
- f.request.content = b"foo"
- f.response.content = b"foo"
- h.run(f)
- assert f.response.content == b"bar"
- assert f.request.content == b"foo"
-
- f = tutils.tflow()
- h.clear()
- h.add("~q", "foo", "bar")
- f.request.content = b"foo"
- h.run(f)
- assert f.request.content == b"bar"
-
- assert not h.add("~", "foo", "bar")
- assert not h.add("foo", "*", "bar")
-
-
def test_setheaders():
h = flow.SetHeaders()
h.add("~q", "foo", "bar")
diff --git a/test/mitmproxy/test_server.py b/test/mitmproxy/test_server.py
index a5196dae..2e580d47 100644
--- a/test/mitmproxy/test_server.py
+++ b/test/mitmproxy/test_server.py
@@ -839,17 +839,12 @@ class TestUpstreamProxy(tservers.HTTPUpstreamProxyTest, CommonMixin, AppMixin):
ssl = False
def test_order(self):
- self.proxy.tmaster.replacehooks.add(
- "~q",
- "foo",
- "bar") # replace in request
- self.chain[0].tmaster.replacehooks.add("~q", "bar", "baz")
- self.chain[1].tmaster.replacehooks.add("~q", "foo", "oh noes!")
- self.chain[0].tmaster.replacehooks.add(
- "~s",
- "baz",
- "ORLY") # replace in response
-
+ self.proxy.tmaster.options.replacements = [
+ ("~q", "foo", "bar"),
+ ("~q", "bar", "baz"),
+ ("~q", "foo", "oh noes!"),
+ ("~s", "baz", "ORLY")
+ ]
p = self.pathoc()
req = p.request("get:'%s/p/418:b\"foo\"'" % self.server.urlbase)
assert req.content == b"ORLY"
diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py
index 9a66984b..9b830b2d 100644
--- a/test/mitmproxy/tservers.py
+++ b/test/mitmproxy/tservers.py
@@ -9,7 +9,9 @@ from mitmproxy.proxy.server import ProxyServer
import pathod.test
import pathod.pathoc
from mitmproxy import flow, controller
+from mitmproxy.flow import options
from mitmproxy.cmdline import APP_HOST, APP_PORT
+from mitmproxy import builtins
testapp = flask.Flask(__name__)
@@ -34,7 +36,8 @@ class TestMaster(flow.FlowMaster):
config.port = 0
s = ProxyServer(config)
state = flow.State()
- flow.FlowMaster.__init__(self, None, s, state)
+ flow.FlowMaster.__init__(self, options.Options(), s, state)
+ self.addons.add(*builtins.default_addons())
self.apps.add(testapp, "testapp", 80)
self.apps.add(errapp, "errapp", 80)
self.clear_log()