[test/test_socks] Add tests for SOCKS proxies
This commit is contained in:
		
							parent
							
								
									71aff18809
								
							
						
					
					
						commit
						72f3289ac4
					
				
					 5 changed files with 79 additions and 1 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -31,6 +31,7 @@ updates_key.pem
 | 
				
			||||||
*.part
 | 
					*.part
 | 
				
			||||||
*.swp
 | 
					*.swp
 | 
				
			||||||
test/testdata
 | 
					test/testdata
 | 
				
			||||||
 | 
					test/local_parameters.json
 | 
				
			||||||
.tox
 | 
					.tox
 | 
				
			||||||
youtube-dl.zsh
 | 
					youtube-dl.zsh
 | 
				
			||||||
.idea
 | 
					.idea
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -37,7 +37,7 @@ test:
 | 
				
			||||||
ot: offlinetest
 | 
					ot: offlinetest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
offlinetest: codetest
 | 
					offlinetest: codetest
 | 
				
			||||||
	$(PYTHON) -m nose --verbose test --exclude test_download.py --exclude test_age_restriction.py --exclude test_subtitles.py --exclude test_write_annotations.py --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py
 | 
						$(PYTHON) -m nose --verbose test --exclude test_download.py --exclude test_age_restriction.py --exclude test_subtitles.py --exclude test_write_annotations.py --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py --exclude test_socks.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tar: youtube-dl.tar.gz
 | 
					tar: youtube-dl.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,8 +24,13 @@ from youtube_dl.utils import (
 | 
				
			||||||
def get_params(override=None):
 | 
					def get_params(override=None):
 | 
				
			||||||
    PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
 | 
					    PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
 | 
				
			||||||
                                   "parameters.json")
 | 
					                                   "parameters.json")
 | 
				
			||||||
 | 
					    LOCAL_PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
 | 
				
			||||||
 | 
					                                         "local_parameters.json")
 | 
				
			||||||
    with io.open(PARAMETERS_FILE, encoding='utf-8') as pf:
 | 
					    with io.open(PARAMETERS_FILE, encoding='utf-8') as pf:
 | 
				
			||||||
        parameters = json.load(pf)
 | 
					        parameters = json.load(pf)
 | 
				
			||||||
 | 
					    if os.path.exists(LOCAL_PARAMETERS_FILE):
 | 
				
			||||||
 | 
					        with io.open(LOCAL_PARAMETERS_FILE, encoding='utf-8') as pf:
 | 
				
			||||||
 | 
					            parameters.update(json.load(pf))
 | 
				
			||||||
    if override:
 | 
					    if override:
 | 
				
			||||||
        parameters.update(override)
 | 
					        parameters.update(override)
 | 
				
			||||||
    return parameters
 | 
					    return parameters
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										71
									
								
								test/test_socks.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								test/test_socks.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					#!/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__))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from test.helper import (FakeYDL, get_params)
 | 
				
			||||||
 | 
					from youtube_dl.compat import compat_urllib_request
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestSocks(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'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    unittest.main()
 | 
				
			||||||
							
								
								
									
										1
									
								
								tox.ini
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								tox.ini
									
										
									
									
									
								
							| 
						 | 
					@ -9,5 +9,6 @@ passenv = HOME
 | 
				
			||||||
defaultargs = test --exclude test_download.py --exclude test_age_restriction.py
 | 
					defaultargs = test --exclude test_download.py --exclude test_age_restriction.py
 | 
				
			||||||
    --exclude test_subtitles.py --exclude test_write_annotations.py
 | 
					    --exclude test_subtitles.py --exclude test_write_annotations.py
 | 
				
			||||||
    --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py
 | 
					    --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py
 | 
				
			||||||
 | 
					    --exclude test_socks.py
 | 
				
			||||||
commands = nosetests --verbose {posargs:{[testenv]defaultargs}}  # --with-coverage --cover-package=youtube_dl --cover-html
 | 
					commands = nosetests --verbose {posargs:{[testenv]defaultargs}}  # --with-coverage --cover-package=youtube_dl --cover-html
 | 
				
			||||||
                                               # test.test_download:TestDownload.test_NowVideo
 | 
					                                               # test.test_download:TestDownload.test_NowVideo
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue