aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/builtins/test_onboarding.py (renamed from test/mitmproxy/test_app.py)5
-rw-r--r--test/mitmproxy/builtins/test_wsgiapp.py61
-rw-r--r--test/mitmproxy/protocol/test_http2.py4
-rw-r--r--test/mitmproxy/protocol/test_websockets.py4
-rw-r--r--test/mitmproxy/test_addons.py2
-rw-r--r--test/mitmproxy/test_dump.py5
-rw-r--r--test/mitmproxy/test_flow.py20
-rw-r--r--test/mitmproxy/test_server.py20
-rw-r--r--test/mitmproxy/tservers.py41
9 files changed, 87 insertions, 75 deletions
diff --git a/test/mitmproxy/test_app.py b/test/mitmproxy/builtins/test_onboarding.py
index 4c9eff08..3226aec3 100644
--- a/test/mitmproxy/test_app.py
+++ b/test/mitmproxy/builtins/test_onboarding.py
@@ -1,7 +1,10 @@
-from . import tservers
+from mitmproxy.builtins import onboarding
+from .. import tservers
class TestApp(tservers.HTTPProxyTest):
+ def addons(self):
+ return [onboarding.Onboarding()]
def test_basic(self):
assert self.app("/").status_code == 200
diff --git a/test/mitmproxy/builtins/test_wsgiapp.py b/test/mitmproxy/builtins/test_wsgiapp.py
new file mode 100644
index 00000000..c8991892
--- /dev/null
+++ b/test/mitmproxy/builtins/test_wsgiapp.py
@@ -0,0 +1,61 @@
+import flask
+
+from .. import tservers
+from mitmproxy.builtins import wsgiapp
+
+testapp = flask.Flask(__name__)
+
+
+@testapp.route("/")
+def hello():
+ return "testapp"
+
+
+@testapp.route("/error")
+def error():
+ raise ValueError("An exception...")
+
+
+def errapp(environ, start_response):
+ raise ValueError("errapp")
+
+
+class TestApp(tservers.HTTPProxyTest):
+ def addons(self):
+ return [
+ wsgiapp.WSGIApp(testapp, "testapp", 80),
+ wsgiapp.WSGIApp(errapp, "errapp", 80)
+ ]
+
+ def test_simple(self):
+ p = self.pathoc()
+ with p.connect():
+ ret = p.request("get:'http://testapp/'")
+ assert ret.status_code == 200
+
+ def _test_app_err(self):
+ p = self.pathoc()
+ with p.connect():
+ ret = p.request("get:'http://errapp/'")
+ assert ret.status_code == 500
+ assert b"ValueError" in ret.content
+
+
+def _test_app_registry():
+ ar = flow.AppRegistry()
+ ar.add("foo", "domain", 80)
+
+ r = HTTPRequest.wrap(netlib.tutils.treq())
+ r.host = "domain"
+ r.port = 80
+ assert ar.get(r)
+
+ r.port = 81
+ assert not ar.get(r)
+
+ r = HTTPRequest.wrap(netlib.tutils.treq())
+ r.host = "domain2"
+ r.port = 80
+ assert not ar.get(r)
+ r.headers["host"] = "domain"
+ assert ar.get(r)
diff --git a/test/mitmproxy/protocol/test_http2.py b/test/mitmproxy/protocol/test_http2.py
index e6b13a05..a2efdc47 100644
--- a/test/mitmproxy/protocol/test_http2.py
+++ b/test/mitmproxy/protocol/test_http2.py
@@ -96,7 +96,6 @@ class _Http2TestBase:
cls.config = ProxyConfig(opts)
tmaster = tservers.TestMaster(opts, cls.config)
- tmaster.start_app(options.APP_HOST, options.APP_PORT)
cls.proxy = tservers.ProxyThread(tmaster)
cls.proxy.start()
@@ -119,8 +118,7 @@ class _Http2TestBase:
return self.proxy.tmaster
def setup(self):
- self.master.clear_log()
- self.master.state.clear()
+ self.master.reset([])
self.server.server.handle_server_event = self.handle_server_event
def _setup_connection(self):
diff --git a/test/mitmproxy/protocol/test_websockets.py b/test/mitmproxy/protocol/test_websockets.py
index 508a539f..ef520d87 100644
--- a/test/mitmproxy/protocol/test_websockets.py
+++ b/test/mitmproxy/protocol/test_websockets.py
@@ -50,7 +50,6 @@ class _WebSocketsTestBase:
cls.config = ProxyConfig(opts)
tmaster = tservers.TestMaster(opts, cls.config)
- tmaster.start_app(options.APP_HOST, options.APP_PORT)
cls.proxy = tservers.ProxyThread(tmaster)
cls.proxy.start()
@@ -74,8 +73,7 @@ class _WebSocketsTestBase:
return self.proxy.tmaster
def setup(self):
- self.master.clear_log()
- self.master.state.clear()
+ self.master.reset([])
self.server.server.handle_websockets = self.handle_websockets
def _setup_connection(self):
diff --git a/test/mitmproxy/test_addons.py b/test/mitmproxy/test_addons.py
index eb35d15b..b3e33b4e 100644
--- a/test/mitmproxy/test_addons.py
+++ b/test/mitmproxy/test_addons.py
@@ -18,3 +18,5 @@ def test_simple():
a.add(TAddon("one"))
assert a.get("one")
assert not a.get("two")
+ a.clear()
+ assert not a.chain
diff --git a/test/mitmproxy/test_dump.py b/test/mitmproxy/test_dump.py
index d1443de4..8a645dac 100644
--- a/test/mitmproxy/test_dump.py
+++ b/test/mitmproxy/test_dump.py
@@ -99,11 +99,6 @@ class TestDumpMaster(mastertest.MasterTest):
self.mkmaster("~u foo", verbosity=1), 1, b""
)
- def test_app(self):
- o = dump.Options(app=True)
- m = dump.DumpMaster(None, o)
- assert len(m.apps.apps) == 1
-
def test_replacements(self):
o = dump.Options(
replacements=[(".*", "content", "foo")],
diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py
index 78cfca99..4531cc5d 100644
--- a/test/mitmproxy/test_flow.py
+++ b/test/mitmproxy/test_flow.py
@@ -17,26 +17,6 @@ from mitmproxy.models.connections import ClientConnection
from . import tutils
-def test_app_registry():
- ar = flow.AppRegistry()
- ar.add("foo", "domain", 80)
-
- r = HTTPRequest.wrap(netlib.tutils.treq())
- r.host = "domain"
- r.port = 80
- assert ar.get(r)
-
- r.port = 81
- assert not ar.get(r)
-
- r = HTTPRequest.wrap(netlib.tutils.treq())
- r.host = "domain2"
- r.port = 80
- assert not ar.get(r)
- r.headers["host"] = "domain"
- assert ar.get(r)
-
-
class TestHTTPFlow:
def test_copy(self):
diff --git a/test/mitmproxy/test_server.py b/test/mitmproxy/test_server.py
index 12c0b25f..6679625b 100644
--- a/test/mitmproxy/test_server.py
+++ b/test/mitmproxy/test_server.py
@@ -201,23 +201,7 @@ class TcpMixin:
# assert any("306" in m for m in self.master.tlog)
-class AppMixin:
-
- def test_app(self):
- ret = self.app("/")
- assert ret.status_code == 200
- assert b"mitmproxy" in ret.content
-
-
-class TestHTTP(tservers.HTTPProxyTest, CommonMixin, AppMixin):
-
- def test_app_err(self):
- p = self.pathoc()
- with p.connect():
- ret = p.request("get:'http://errapp/'")
- assert ret.status_code == 500
- assert b"ValueError" in ret.content
-
+class TestHTTP(tservers.HTTPProxyTest, CommonMixin):
def test_invalid_connect(self):
t = tcp.TCPClient(("127.0.0.1", self.proxy.port))
with t.connect():
@@ -897,7 +881,7 @@ class TestIncompleteResponse(tservers.HTTPProxyTest):
assert self.pathod("200").status_code == 502
-class TestUpstreamProxy(tservers.HTTPUpstreamProxyTest, CommonMixin, AppMixin):
+class TestUpstreamProxy(tservers.HTTPUpstreamProxyTest, CommonMixin):
ssl = False
diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py
index e704faa4..b09a6cf9 100644
--- a/test/mitmproxy/tservers.py
+++ b/test/mitmproxy/tservers.py
@@ -1,7 +1,6 @@
import os.path
import threading
import tempfile
-import flask
import mock
import sys
@@ -13,37 +12,26 @@ import pathod.pathoc
from mitmproxy import flow, controller, options
import netlib.exceptions
-testapp = flask.Flask(__name__)
-
-
-@testapp.route("/")
-def hello():
- return "testapp"
-
-
-@testapp.route("/error")
-def error():
- raise ValueError("An exception...")
-
-
-def errapp(environ, start_response):
- raise ValueError("errapp")
-
class TestMaster(flow.FlowMaster):
def __init__(self, opts, config):
s = ProxyServer(config)
flow.FlowMaster.__init__(self, opts, s)
+
+ def clear_addons(self, addons):
+ self.addons.clear()
self.state = state.State()
self.addons.add(self.state)
- self.apps.add(testapp, "testapp", 80)
- self.apps.add(errapp, "errapp", 80)
- self.clear_log()
+ self.addons.add(*addons)
def clear_log(self):
self.tlog = []
+ def reset(self, addons):
+ self.clear_addons(addons)
+ self.clear_log()
+
@controller.handler
def log(self, e):
self.tlog.append(e.msg)
@@ -94,7 +82,6 @@ class ProxyTestBase:
opts = cls.get_options()
cls.config = ProxyConfig(opts)
tmaster = cls.masterclass(opts, cls.config)
- tmaster.start_app(options.APP_HOST, options.APP_PORT)
cls.proxy = ProxyThread(tmaster)
cls.proxy.start()
@@ -116,8 +103,7 @@ class ProxyTestBase:
raise
def setup(self):
- self.master.state.clear()
- self.master.clear_log()
+ self.master.reset(self.addons())
self.server.clear_log()
self.server2.clear_log()
@@ -135,6 +121,12 @@ class ProxyTestBase:
ssl_insecure=True,
)
+ def addons(self):
+ """
+ Can be over-ridden to add a standard set of addons to tests.
+ """
+ return []
+
class LazyPathoc(pathod.pathoc.Pathoc):
def __init__(self, lazy_connect, *args, **kwargs):
@@ -330,8 +322,7 @@ class ChainProxyTest(ProxyTestBase):
def setup(self):
super().setup()
for proxy in self.chain:
- proxy.tmaster.clear_log()
- proxy.tmaster.state.clear()
+ proxy.tmaster.reset(self.addons())
@classmethod
def get_options(cls):