aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMarcelo Glezer <mg@tekii.com.ar>2015-03-02 14:37:30 -0300
committerMarcelo Glezer <mg@tekii.com.ar>2015-03-02 14:37:30 -0300
commit8008a4336d85f4d34bd9f192c5f3e510f4adf5cd (patch)
tree02240bbd5a5abcff275e2d841252c1b86a32f6eb /test
parentbd6c3f64c1f3102a4e91d4a964757821773781e0 (diff)
parente65a8659f00fb949d15f9af9fefd72df48abe9af (diff)
downloadmitmproxy-8008a4336d85f4d34bd9f192c5f3e510f4adf5cd.tar.gz
mitmproxy-8008a4336d85f4d34bd9f192c5f3e510f4adf5cd.tar.bz2
mitmproxy-8008a4336d85f4d34bd9f192c5f3e510f4adf5cd.zip
Merge pull request #2 from mitmproxy/master
update to mitmproxy/master
Diffstat (limited to 'test')
-rw-r--r--test/scripts/stream_modify.py7
-rw-r--r--test/test_server.py37
-rw-r--r--test/test_utils.py13
-rw-r--r--test/tservers.py4
4 files changed, 59 insertions, 2 deletions
diff --git a/test/scripts/stream_modify.py b/test/scripts/stream_modify.py
new file mode 100644
index 00000000..9a98a7ee
--- /dev/null
+++ b/test/scripts/stream_modify.py
@@ -0,0 +1,7 @@
+def modify(chunks):
+ for prefix, content, suffix in chunks:
+ yield prefix, content.replace("foo", "bar"), suffix
+
+
+def responseheaders(context, flow):
+ flow.response.stream = modify \ No newline at end of file
diff --git a/test/test_server.py b/test/test_server.py
index a611d30f..26770f29 100644
--- a/test/test_server.py
+++ b/test/test_server.py
@@ -1,5 +1,6 @@
import socket, time
from libmproxy.proxy.config import HostMatcher
+import libpathod
from netlib import tcp, http_auth, http
from libpathod import pathoc, pathod
from netlib.certutils import SSLCert
@@ -265,6 +266,12 @@ class TestHTTP(tservers.HTTPProxTest, CommonMixin, AppMixin):
assert self.master.state.view[-1].response.content == CONTENT_MISSING
self.master.set_stream_large_bodies(None)
+ def test_stream_modify(self):
+ self.master.load_script(tutils.test_data.path("scripts/stream_modify.py"))
+ d = self.pathod('200:b"foo"')
+ assert d.content == "bar"
+ self.master.unload_scripts()
+
class TestHTTPAuth(tservers.HTTPProxTest):
authenticator = http_auth.BasicProxyAuth(http_auth.PassManSingleUser("test", "test"), "realm")
def test_auth(self):
@@ -332,6 +339,36 @@ class TestReverse(tservers.ReverseProxTest, CommonMixin, TcpMixin):
reverse = True
+class TestHttps2Http(tservers.ReverseProxTest):
+ @classmethod
+ def get_proxy_config(cls):
+ d = super(TestHttps2Http, cls).get_proxy_config()
+ d["upstream_server"][0] = True
+ return d
+
+ def pathoc(self, ssl, sni=None):
+ """
+ Returns a connected Pathoc instance.
+ """
+ p = libpathod.pathoc.Pathoc(("localhost", self.proxy.port), ssl=ssl, sni=sni)
+ p.connect()
+ return p
+
+ def test_all(self):
+ p = self.pathoc(ssl=True)
+ assert p.request("get:'/p/200'").status_code == 200
+
+ def test_sni(self):
+ p = self.pathoc(ssl=True, sni="example.com")
+ assert p.request("get:'/p/200'").status_code == 200
+ assert all("Error in handle_sni" not in msg for msg in self.proxy.log)
+
+ def test_http(self):
+ p = self.pathoc(ssl=False)
+ assert p.request("get:'/p/200'").status_code == 400
+
+
+
class TestTransparent(tservers.TransparentProxTest, CommonMixin, TcpMixin):
ssl = False
diff --git a/test/test_utils.py b/test/test_utils.py
index d99a146d..45bfb4f7 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -50,6 +50,19 @@ def test_urldecode():
s = "one=two&three=four"
assert len(utils.urldecode(s)) == 2
+def test_pretty_duration():
+ assert utils.pretty_duration(0.00001) == "0ms"
+ assert utils.pretty_duration(0.0001) == "0ms"
+ assert utils.pretty_duration(0.001) == "1ms"
+ assert utils.pretty_duration(0.01) == "10ms"
+ assert utils.pretty_duration(0.1) == "100ms"
+ assert utils.pretty_duration(1) == "1.00s"
+ assert utils.pretty_duration(10) == "10.0s"
+ assert utils.pretty_duration(100) == "100s"
+ assert utils.pretty_duration(1000) == "1000s"
+ assert utils.pretty_duration(10000) == "10000s"
+ assert utils.pretty_duration(1.123) == "1.12s"
+ assert utils.pretty_duration(0.123) == "123ms"
def test_LRUCache():
class Foo:
diff --git a/test/tservers.py b/test/tservers.py
index 37929d1a..30c8b52e 100644
--- a/test/tservers.py
+++ b/test/tservers.py
@@ -218,12 +218,12 @@ class ReverseProxTest(ProxTestBase):
@classmethod
def get_proxy_config(cls):
d = ProxTestBase.get_proxy_config()
- d["upstream_server"] = (
+ d["upstream_server"] = [
True if cls.ssl else False,
True if cls.ssl else False,
"127.0.0.1",
cls.server.port
- )
+ ]
d["mode"] = "reverse"
return d