aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-07-18 14:19:39 +1200
committerAldo Cortesi <aldo@nullcube.com>2016-07-19 16:25:09 +1200
commit6908dc4d901fbe23107253535596a14ed2691539 (patch)
tree1d610d1c4ae372165f92bef3c01c18cf3c0644e8 /test
parent9bc1514aefe524a0c6afceec8e2d2afe15acdf66 (diff)
downloadmitmproxy-6908dc4d901fbe23107253535596a14ed2691539.tar.gz
mitmproxy-6908dc4d901fbe23107253535596a14ed2691539.tar.bz2
mitmproxy-6908dc4d901fbe23107253535596a14ed2691539.zip
ProxyConfig refactor
Step two of frog boiling: move listening address and port into options. This is the hard bit, because it touches the test suite so deeply.
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/test_protocol_http2.py9
-rw-r--r--test/mitmproxy/test_proxy.py6
-rw-r--r--test/mitmproxy/test_server.py4
-rw-r--r--test/mitmproxy/tservers.py40
4 files changed, 30 insertions, 29 deletions
diff --git a/test/mitmproxy/test_protocol_http2.py b/test/mitmproxy/test_protocol_http2.py
index 04ca94bf..dd81ba23 100644
--- a/test/mitmproxy/test_protocol_http2.py
+++ b/test/mitmproxy/test_protocol_http2.py
@@ -90,9 +90,10 @@ class _Http2TestBase(object):
@classmethod
def setup_class(cls):
cls.masteroptions = options.Options()
- cls.config = ProxyConfig(cls.masteroptions, **cls.get_proxy_config())
+ cnf, opts = cls.get_proxy_config()
+ cls.config = ProxyConfig(opts, **cnf)
- tmaster = tservers.TestMaster(cls.masteroptions, cls.config)
+ tmaster = tservers.TestMaster(opts, cls.config)
tmaster.start_app(APP_HOST, APP_PORT)
cls.proxy = tservers.ProxyThread(tmaster)
cls.proxy.start()
@@ -103,12 +104,14 @@ class _Http2TestBase(object):
@classmethod
def get_proxy_config(cls):
+ opts = options.Options(listen_port=0)
cls.cadir = os.path.join(tempfile.gettempdir(), "mitmproxy")
- return dict(
+ d = dict(
no_upstream_cert=False,
cadir=cls.cadir,
authenticator=None,
)
+ return d, opts
@property
def master(self):
diff --git a/test/mitmproxy/test_proxy.py b/test/mitmproxy/test_proxy.py
index f4f73cf5..c87e1ad4 100644
--- a/test/mitmproxy/test_proxy.py
+++ b/test/mitmproxy/test_proxy.py
@@ -160,15 +160,13 @@ class TestProxyServer:
@tutils.skip_windows
def test_err(self):
conf = ProxyConfig(
- options.Options(),
- port=1
+ options.Options(listen_port=1),
)
tutils.raises("error starting proxy server", ProxyServer, conf)
def test_err_2(self):
conf = ProxyConfig(
- options.Options(),
- host="invalidhost"
+ options.Options(listen_host="invalidhost"),
)
tutils.raises("error starting proxy server", ProxyServer, conf)
diff --git a/test/mitmproxy/test_server.py b/test/mitmproxy/test_server.py
index 2e580d47..20372c92 100644
--- a/test/mitmproxy/test_server.py
+++ b/test/mitmproxy/test_server.py
@@ -484,9 +484,9 @@ class TestHttps2Http(tservers.ReverseProxyTest):
@classmethod
def get_proxy_config(cls):
- d = super(TestHttps2Http, cls).get_proxy_config()
+ d, opts = super(TestHttps2Http, cls).get_proxy_config()
d["upstream_server"] = ("http", d["upstream_server"][1])
- return d
+ return d, opts
def pathoc(self, ssl, sni=None):
"""
diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py
index e236656e..f9e1925f 100644
--- a/test/mitmproxy/tservers.py
+++ b/test/mitmproxy/tservers.py
@@ -33,7 +33,6 @@ def errapp(environ, start_response):
class TestMaster(flow.FlowMaster):
def __init__(self, opts, config):
- config.port = 0
s = ProxyServer(config)
state = flow.State()
flow.FlowMaster.__init__(self, opts, s, state)
@@ -55,7 +54,8 @@ class ProxyThread(threading.Thread):
threading.Thread.__init__(self)
self.tmaster = tmaster
self.name = "ProxyThread (%s:%s)" % (
- tmaster.server.address.host, tmaster.server.address.port)
+ tmaster.server.address.host, tmaster.server.address.port
+ )
controller.should_exit = False
@property
@@ -80,7 +80,6 @@ class ProxyTestBase(object):
no_upstream_cert = False
authenticator = None
masterclass = TestMaster
- masteroptions = options.Options()
add_upstream_certs_to_client_chain = False
@classmethod
@@ -92,8 +91,9 @@ class ProxyTestBase(object):
ssl=cls.ssl,
ssloptions=cls.ssloptions)
- cls.config = ProxyConfig(cls.masteroptions, **cls.get_proxy_config())
- tmaster = cls.masterclass(cls.masteroptions, cls.config)
+ cnf, opts = cls.get_proxy_config()
+ cls.config = ProxyConfig(opts, **cnf)
+ tmaster = cls.masterclass(opts, cls.config)
tmaster.start_app(APP_HOST, APP_PORT)
cls.proxy = ProxyThread(tmaster)
cls.proxy.start()
@@ -120,12 +120,13 @@ class ProxyTestBase(object):
@classmethod
def get_proxy_config(cls):
cls.cadir = os.path.join(tempfile.gettempdir(), "mitmproxy")
- return dict(
+ cnf = dict(
no_upstream_cert = cls.no_upstream_cert,
cadir = cls.cadir,
authenticator = cls.authenticator,
add_upstream_certs_to_client_chain = cls.add_upstream_certs_to_client_chain,
)
+ return cnf, options.Options(listen_port=0)
class HTTPProxyTest(ProxyTestBase):
@@ -199,9 +200,9 @@ class TransparentProxyTest(ProxyTestBase):
@classmethod
def get_proxy_config(cls):
- d = ProxyTestBase.get_proxy_config()
+ d, opts = ProxyTestBase.get_proxy_config()
d["mode"] = "transparent"
- return d
+ return d, opts
def pathod(self, spec, sni=None):
"""
@@ -231,13 +232,13 @@ class ReverseProxyTest(ProxyTestBase):
@classmethod
def get_proxy_config(cls):
- d = ProxyTestBase.get_proxy_config()
+ d, opts = ProxyTestBase.get_proxy_config()
d["upstream_server"] = (
"https" if cls.ssl else "http",
("127.0.0.1", cls.server.port)
)
d["mode"] = "reverse"
- return d
+ return d, opts
def pathoc(self, sni=None):
"""
@@ -266,9 +267,9 @@ class SocksModeTest(HTTPProxyTest):
@classmethod
def get_proxy_config(cls):
- d = ProxyTestBase.get_proxy_config()
+ d, opts = ProxyTestBase.get_proxy_config()
d["mode"] = "socks5"
- return d
+ return d, opts
class ChainProxyTest(ProxyTestBase):
@@ -284,20 +285,19 @@ class ChainProxyTest(ProxyTestBase):
@classmethod
def setup_class(cls):
- cls.masteroptions = options.Options()
cls.chain = []
super(ChainProxyTest, cls).setup_class()
for _ in range(cls.n):
- config = ProxyConfig(cls.masteroptions, **cls.get_proxy_config())
- tmaster = cls.masterclass(cls.masteroptions, config)
+ cnf, opts = cls.get_proxy_config()
+ config = ProxyConfig(opts, **cnf)
+ tmaster = cls.masterclass(opts, config)
proxy = ProxyThread(tmaster)
proxy.start()
cls.chain.insert(0, proxy)
# Patch the orginal proxy to upstream mode
- cls.config = cls.proxy.tmaster.config = cls.proxy.tmaster.server.config = ProxyConfig(
- cls.masteroptions,
- **cls.get_proxy_config())
+ cnf, opts = cls.get_proxy_config()
+ cls.config = cls.proxy.tmaster.config = cls.proxy.tmaster.server.config = ProxyConfig(opts, **cnf)
@classmethod
def teardown_class(cls):
@@ -313,13 +313,13 @@ class ChainProxyTest(ProxyTestBase):
@classmethod
def get_proxy_config(cls):
- d = super(ChainProxyTest, cls).get_proxy_config()
+ d, opts = super(ChainProxyTest, cls).get_proxy_config()
if cls.chain: # First proxy is in normal mode.
d.update(
mode="upstream",
upstream_server=("http", ("127.0.0.1", cls.chain[0].port))
)
- return d
+ return d, opts
class HTTPUpstreamProxyTest(ChainProxyTest, HTTPProxyTest):