| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- #!/usr/bin/env python
 
- # coding: utf-8
 
- from __future__ import unicode_literals
 
- # Allow direct execution
 
- import os
 
- import sys
 
- import unittest
 
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 
- import random
 
- import subprocess
 
- from test.helper import (
 
-     FakeYDL,
 
-     get_params,
 
- )
 
- from youtube_dl.compat import (
 
-     compat_str,
 
-     compat_urllib_request,
 
- )
 
- class TestMultipleSocks(unittest.TestCase):
 
-     @staticmethod
 
-     def _check_params(attrs):
 
-         params = get_params()
 
-         for attr in attrs:
 
-             if attr not in params:
 
-                 print('Missing %s. Skipping.' % attr)
 
-                 return
 
-         return params
 
-     def test_proxy_http(self):
 
-         params = self._check_params(['primary_proxy', 'primary_server_ip'])
 
-         if params is None:
 
-             return
 
-         ydl = FakeYDL({
 
-             'proxy': params['primary_proxy']
 
-         })
 
-         self.assertEqual(
 
-             ydl.urlopen('http://yt-dl.org/ip').read().decode('utf-8'),
 
-             params['primary_server_ip'])
 
-     def test_proxy_https(self):
 
-         params = self._check_params(['primary_proxy', 'primary_server_ip'])
 
-         if params is None:
 
-             return
 
-         ydl = FakeYDL({
 
-             'proxy': params['primary_proxy']
 
-         })
 
-         self.assertEqual(
 
-             ydl.urlopen('https://yt-dl.org/ip').read().decode('utf-8'),
 
-             params['primary_server_ip'])
 
-     def test_secondary_proxy_http(self):
 
-         params = self._check_params(['secondary_proxy', 'secondary_server_ip'])
 
-         if params is None:
 
-             return
 
-         ydl = FakeYDL()
 
-         req = compat_urllib_request.Request('http://yt-dl.org/ip')
 
-         req.add_header('Ytdl-request-proxy', params['secondary_proxy'])
 
-         self.assertEqual(
 
-             ydl.urlopen(req).read().decode('utf-8'),
 
-             params['secondary_server_ip'])
 
-     def test_secondary_proxy_https(self):
 
-         params = self._check_params(['secondary_proxy', 'secondary_server_ip'])
 
-         if params is None:
 
-             return
 
-         ydl = FakeYDL()
 
-         req = compat_urllib_request.Request('https://yt-dl.org/ip')
 
-         req.add_header('Ytdl-request-proxy', params['secondary_proxy'])
 
-         self.assertEqual(
 
-             ydl.urlopen(req).read().decode('utf-8'),
 
-             params['secondary_server_ip'])
 
- class TestSocks(unittest.TestCase):
 
-     _SKIP_SOCKS_TEST = True
 
-     def setUp(self):
 
-         if self._SKIP_SOCKS_TEST:
 
-             return
 
-         self.port = random.randint(20000, 30000)
 
-         self.server_process = subprocess.Popen([
 
-             'srelay', '-f', '-i', '127.0.0.1:%d' % self.port],
 
-             stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
-     def tearDown(self):
 
-         if self._SKIP_SOCKS_TEST:
 
-             return
 
-         self.server_process.terminate()
 
-         self.server_process.communicate()
 
-     def _get_ip(self, protocol):
 
-         if self._SKIP_SOCKS_TEST:
 
-             return '127.0.0.1'
 
-         ydl = FakeYDL({
 
-             'proxy': '%s://127.0.0.1:%d' % (protocol, self.port),
 
-         })
 
-         return ydl.urlopen('http://yt-dl.org/ip').read().decode('utf-8')
 
-     def test_socks4(self):
 
-         self.assertTrue(isinstance(self._get_ip('socks4'), compat_str))
 
-     def test_socks4a(self):
 
-         self.assertTrue(isinstance(self._get_ip('socks4a'), compat_str))
 
-     def test_socks5(self):
 
-         self.assertTrue(isinstance(self._get_ip('socks5'), compat_str))
 
- if __name__ == '__main__':
 
-     unittest.main()
 
 
  |