diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-03-11 02:16:22 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-03-11 02:16:22 +0100 |
commit | 15c82f743f6969b11afe17ecb82840e70d6b3ba3 (patch) | |
tree | 6eb6041f2db1be8a4f07d97e777bd877d6194049 /test | |
parent | c1fff51b1bf25ac048149398ae6b6dc14882a838 (diff) | |
download | mitmproxy-15c82f743f6969b11afe17ecb82840e70d6b3ba3.tar.gz mitmproxy-15c82f743f6969b11afe17ecb82840e70d6b3ba3.tar.bz2 mitmproxy-15c82f743f6969b11afe17ecb82840e70d6b3ba3.zip |
fix temporary server change, coverage++
Diffstat (limited to 'test')
-rw-r--r-- | test/test_server.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/test_server.py b/test/test_server.py index 43ef546d..8bde3bff 100644 --- a/test/test_server.py +++ b/test/test_server.py @@ -3,6 +3,7 @@ import mock from netlib import tcp, http_auth, http from libpathod import pathoc, pathod import tutils, tservers +from libmproxy import flow from libmproxy.protocol import KILL from libmproxy.protocol.http import CONTENT_MISSING @@ -328,6 +329,61 @@ class TestProxySSL(tservers.HTTPProxTest): first_request = self.master.state.view[0].request assert first_request.flow.server_conn.timestamp_ssl_setup + +class MasterRedirectRequest(tservers.TestMaster): + def handle_request(self, request): + if request.path == "/p/201": + url = request.get_url() + new = "http://127.0.0.1:%s/p/201" % self.redirect_port + + request.set_url(new) + request.set_url(new) + request.flow.change_server(("127.0.0.1", self.redirect_port), False) + request.set_url(url) + tutils.raises("SSL handshake error", request.flow.change_server, ("127.0.0.1", self.redirect_port), True) + request.set_url(new) + request.set_url(url) + request.set_url(new) + tservers.TestMaster.handle_request(self, request) + + def handle_response(self, response): + response.content = str(response.flow.client_conn.address.port) + tservers.TestMaster.handle_response(self, response) + + +class TestRedirectRequest(tservers.HTTPProxTest): + masterclass = MasterRedirectRequest + + def test_redirect(self): + self.master.redirect_port = self.server2.port + + p = self.pathoc() + + self.server.clear_log() + self.server2.clear_log() + r1 = p.request("get:'%s/p/200'"%self.server.urlbase) + assert r1.status_code == 200 + assert self.server.last_log() + assert not self.server2.last_log() + + self.server.clear_log() + self.server2.clear_log() + r2 = p.request("get:'%s/p/201'"%self.server.urlbase) + assert r2.status_code == 201 + assert not self.server.last_log() + assert self.server2.last_log() + + self.server.clear_log() + self.server2.clear_log() + r3 = p.request("get:'%s/p/202'"%self.server.urlbase) + assert r3.status_code == 202 + assert self.server.last_log() + assert not self.server2.last_log() + + assert r3.content == r2.content == r1.content + # Make sure that we actually use the same connection in this test case + + class MasterFakeResponse(tservers.TestMaster): def handle_request(self, m): resp = tutils.tresp() |