# -*- 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'))):
        requests.get(httpbin.url, proxies={'http': proxy_server})
        requests.get(httpbin.url, proxies={'http': proxy_server})

# -*- coding: utf-8 -*-
'''Test using a proxy.'''

# External imports
import multiprocessing
import pytest
requests = pytest.importorskip("requests")

from six.moves import socketserver, SimpleHTTPServer
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'))):
        requests.get(httpbin.url, proxies={'http': proxy_server})
        requests.get(httpbin.url, proxies={'http': proxy_server})

Fix `socketserver` for Python 3