diff --git a/doc-src/howmitmproxy.html b/doc-src/howmitmproxy.html index 6ea723cdc..94c895d7c 100644 --- a/doc-src/howmitmproxy.html +++ b/doc-src/howmitmproxy.html @@ -71,7 +71,7 @@ flow of requests and responses are completely opaque to the proxy. ## The MITM in mitmproxy -This is where mitmproxy's fundamental trick comes in to play. The MITM in its +This is where mitmproxy's fundamental trick comes into play. The MITM in its name stands for Man-In-The-Middle - a reference to the process we use to intercept and interfere with these theoretially opaque data streams. The basic idea is to pretend to be the server to the client, and pretend to be the client diff --git a/test/test_server.py b/test/test_server.py index a2c65275e..9df88400d 100644 --- a/test/test_server.py +++ b/test/test_server.py @@ -1,4 +1,5 @@ import socket, time +import mock from netlib import tcp from libpathod import pathoc import tutils, tservers @@ -97,6 +98,14 @@ class TestHTTP(tservers.HTTPProxTest, SanityMixin): assert p.request("get:'%s':h'Connection'='close'"%response) tutils.raises("disconnect", p.request, "get:'%s'"%response) + def test_proxy_ioerror(self): + # Tests a difficult-to-trigger condition, where an IOError is raised + # within our read loop. + with mock.patch("libmproxy.proxy.ProxyHandler.read_request") as m: + m.side_effect = IOError("error!") + tutils.raises("empty reply", self.pathod, "304") + + class TestHTTPS(tservers.HTTPProxTest, SanityMixin): ssl = True diff --git a/test/tservers.py b/test/tservers.py index ae0bacf51..262536a77 100644 --- a/test/tservers.py +++ b/test/tservers.py @@ -63,7 +63,7 @@ class ProxTestBase: cls.server = libpathod.test.Daemon(ssl=cls.ssl) pconf = cls.get_proxy_config() config = proxy.ProxyConfig( - certfile=tutils.test_data.path("data/testkey.pem"), + cacert = tutils.test_data.path("data/serverkey.pem"), **pconf ) tmaster = cls.masterclass(cls.tqueue, config)