from .base_config_test import BaseConfigTest, fmod_sl

import pywb.warcserver.http as pywb_http
import os
import socket
import gevent
import pytest


# ============================================================================
class TestSOCKSProxy(BaseConfigTest):
    @classmethod
    def setup_class(cls):
        pytest.importorskip('socks')
        os.environ['SOCKS_HOST'] = 'localhost'
        os.environ['SOCKS_PORT'] = '0'

        pywb_http.patch_socks()
        import pywb.warcserver.resource.responseloader
        pywb.warcserver.resource.responseloader.SOCKS_PROXIES = pywb_http.SOCKS_PROXIES
        super(TestSOCKSProxy, cls).setup_class('config_test.yaml')

    @classmethod
    def teardown_class(cls):
        pywb_http.unpatch_socks()
        super(TestSOCKSProxy, cls).teardown_class()

    def test_socks_proxy_set(self):
        assert pywb_http.SOCKS_PROXIES == {'http': 'socks5h://localhost:0',
                                           'https': 'socks5h://localhost:0'
                                          }

    def test_socks_attempt_connect(self, fmod_sl):
        # no proxy is set, expect to fail if socks is being used
        resp = self.get('/live/{0}http://httpbin.org/get', fmod_sl, status=400)
        assert resp.status_int == 400