From 236dc1f4f299d85af8ab38e19c16aac828556f2b Mon Sep 17 00:00:00 2001 From: Samuel Fekete Date: Mon, 3 Jul 2017 12:25:01 +0100 Subject: [PATCH] Add test for proxies --- tests/integration/test_proxy.py | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/integration/test_proxy.py diff --git a/tests/integration/test_proxy.py b/tests/integration/test_proxy.py new file mode 100644 index 0000000..3212b24 --- /dev/null +++ b/tests/integration/test_proxy.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +'''Test using a proxy.''' + +# External imports +import multiprocessing +import SocketServer +import SimpleHTTPServer +import pytest +requests = pytest.importorskip("requests") + +from six.moves.urllib.request import urlopen + +# Internal imports +import vcr + + +class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): + ''' + Simple proxy server. + + (from: http://effbot.org/librarybook/simplehttpserver.htm). + ''' + def do_GET(self): + self.copyfile(urlopen(self.path), self.wfile) + + +@pytest.yield_fixture(scope='session') +def proxy_server(httpbin): + httpd = SocketServer.ForkingTCPServer(('', 0), Proxy) + proxy_process = multiprocessing.Process( + target=httpd.serve_forever, + ) + proxy_process.start() + yield 'http://{}:{}'.format(*httpd.server_address) + proxy_process.terminate() + + +def test_use_proxy(tmpdir, httpbin, proxy_server): + '''Ensure that it works with a proxy.''' + with vcr.use_cassette(str(tmpdir.join('proxy.yaml'))) as cass: + requests.get(httpbin.url, proxies={'http': proxy_server}) + requests.get(httpbin.url, proxies={'http': proxy_server})