mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	Add a test for --no-check-certificate
This commit is contained in:
		
							
								
								
									
										71
									
								
								test/test_http.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								test/test_http.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | #!/usr/bin/env python | ||||||
|  | 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 youtube_dl import YoutubeDL | ||||||
|  | from youtube_dl.compat import compat_http_server | ||||||
|  | import ssl | ||||||
|  | import threading | ||||||
|  |  | ||||||
|  | TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | ||||||
|  |  | ||||||
|  | class HTTPTestRequestHandler(compat_http_server.BaseHTTPRequestHandler): | ||||||
|  |     def log_message(self, format, *args): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def do_GET(self): | ||||||
|  |         if self.path == '/video.html': | ||||||
|  |             self.send_response(200) | ||||||
|  |             self.send_header('Content-Type', 'text/html; charset=utf-8') | ||||||
|  |             self.end_headers() | ||||||
|  |             self.wfile.write(b'<html><video src="/vid.mp4" /></html>') | ||||||
|  |         elif self.path == '/vid.mp4': | ||||||
|  |             self.send_response(200) | ||||||
|  |             self.send_header('Content-Type', 'video/mp4') | ||||||
|  |             self.end_headers() | ||||||
|  |             self.wfile.write(b'\x00\x00\x00\x00\x20\x66\x74[video]') | ||||||
|  |         else: | ||||||
|  |             assert False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class FakeLogger(object): | ||||||
|  |     def debug(self, msg): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def warning(self, msg): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def error(self, msg): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestHTTP(unittest.TestCase): | ||||||
|  |     def setUp(self): | ||||||
|  |         certfn = os.path.join(TEST_DIR, 'testcert.pem') | ||||||
|  |         self.httpd = compat_http_server.HTTPServer( | ||||||
|  |             ('localhost', 0), HTTPTestRequestHandler) | ||||||
|  |         self.httpd.socket = ssl.wrap_socket( | ||||||
|  |             self.httpd.socket, certfile=certfn, server_side=True) | ||||||
|  |         self.port = self.httpd.socket.getsockname()[1] | ||||||
|  |         self.server_thread = threading.Thread(target=self.httpd.serve_forever) | ||||||
|  |         self.server_thread.daemon = True | ||||||
|  |         self.server_thread.start() | ||||||
|  |  | ||||||
|  |     def test_nocheckcertificate(self): | ||||||
|  |         if sys.version_info >= (2, 7, 9):  # No certificate checking anyways | ||||||
|  |             ydl = YoutubeDL({'logger': FakeLogger()}) | ||||||
|  |             self.assertRaises( | ||||||
|  |                 Exception, | ||||||
|  |                 ydl.extract_info, 'https://localhost:%d/video.html' % self.port) | ||||||
|  |  | ||||||
|  |         ydl = YoutubeDL({'logger': FakeLogger(), 'nocheckcertificate': True}) | ||||||
|  |         r = ydl.extract_info('https://localhost:%d/video.html' % self.port) | ||||||
|  |         self.assertEqual(r['url'], 'https://localhost:%d/vid.mp4' % self.port) | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     unittest.main() | ||||||
							
								
								
									
										52
									
								
								test/testcert.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								test/testcert.pem
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | -----BEGIN PRIVATE KEY----- | ||||||
|  | MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMF0bAzaHAdIyB | ||||||
|  | HRmnIp4vv40lGqEePmWqicCl0QZ0wsb5dNysSxSa7330M2QeQopGfdaUYF1uTcNp | ||||||
|  | Qx6ECgBSfg+RrOBI7r/u4F+sKX8MUXVaf/5QoBUrGNGSn/pp7HMGOuQqO6BVg4+h | ||||||
|  | A1ySSwUG8mZItLRry1ISyErmW8b9xlqfd97uLME/5tX+sMelRFjUbAx8A4CK58Ev | ||||||
|  | mMguHVTlXzx5RMdYcf1VScYcjlV/qA45uzP8zwI5aigfcmUD+tbGuQRhKxUhmw0J | ||||||
|  | aobtOR6+JSOAULW5gYa/egE4dWLwbyM6b6eFbdnjlQzEA1EW7ChMPAW/Mo83KyiP | ||||||
|  | tKMCSQulAgMBAAECggEALCfBDAexPjU5DNoh6bIorUXxIJzxTNzNHCdvgbCGiA54 | ||||||
|  | BBKPh8s6qwazpnjT6WQWDIg/O5zZufqjE4wM9x4+0Zoqfib742ucJO9wY4way6x4 | ||||||
|  | Clt0xzbLPabB+MoZ4H7ip+9n2+dImhe7pGdYyOHoNYeOL57BBi1YFW42Hj6u/8pd | ||||||
|  | 63YCXisto3Rz1YvRQVjwsrS+cRKZlzAFQRviL30jav7Wh1aWEfcXxjj4zhm8pJdk | ||||||
|  | ITGtq6howz57M0NtX6hZnfe8ywzTnDFIGKIMA2cYHuYJcBh9bc4tCGubTvTKK9UE | ||||||
|  | 8fM+f6UbfGqfpKCq1mcgs0XMoFDSzKS9+mSJn0+5JQKBgQD+OCKaeH3Yzw5zGnlw | ||||||
|  | XuQfMJGNcgNr+ImjmvzUAC2fAZUJLAcQueE5kzMv5Fmd+EFE2CEX1Vit3tg0SXvA | ||||||
|  | G+bq609doILHMA03JHnV1npO/YNIhG3AAtJlKYGxQNfWH9mflYj9mEui8ZFxG52o | ||||||
|  | zWhHYuifOjjZszUR+/eio6NPzwKBgQDNhUBTrT8LIX4SE/EFUiTlYmWIvOMgXYvN | ||||||
|  | 8Cm3IRNQ/yyphZaXEU0eJzfX5uCDfSVOgd6YM/2pRah+t+1Hvey4H8e0GVTu5wMP | ||||||
|  | gkkqwKPGIR1YOmlw6ippqwvoJD7LuYrm6Q4D6e1PvkjwCq6lEndrOPmPrrXNd0JJ | ||||||
|  | XO60y3U2SwKBgQDLkyZarryQXxcCI6Q10Tc6pskYDMIit095PUbTeiUOXNT9GE28 | ||||||
|  | Hi32ziLCakk9kCysNasii81MxtQ54tJ/f5iGbNMMddnkKl2a19Hc5LjjAm4cJzg/ | ||||||
|  | 98KGEhvyVqvAo5bBDZ06/rcrD+lZOzUglQS5jcIcqCIYa0LHWQ/wJLxFzwKBgFcZ | ||||||
|  | 1SRhdSmDfUmuF+S4ZpistflYjC3IV5rk4NkS9HvMWaJS0nqdw4A3AMzItXgkjq4S | ||||||
|  | DkOVLTkTI5Do5HAWRv/VwC5M2hkR4NMu1VGAKSisGiKtRsirBWSZMEenLNHshbjN | ||||||
|  | Jrpz5rZ4H7NT46ZkCCZyFBpX4gb9NyOedjA7Via3AoGARF8RxbYjnEGGFuhnbrJB | ||||||
|  | FTPR0vaL4faY3lOgRZ8jOG9V2c9Hzi/y8a8TU4C11jnJSDqYCXBTd5XN28npYxtD | ||||||
|  | pjRsCwy6ze+yvYXPO7C978eMG3YRyj366NXUxnXN59ibwe/lxi2OD9z8J1LEdF6z | ||||||
|  | VJua1Wn8HKxnXMI61DhTCSo= | ||||||
|  | -----END PRIVATE KEY----- | ||||||
|  | -----BEGIN CERTIFICATE----- | ||||||
|  | MIIEEzCCAvugAwIBAgIJAK1haYi6gmSKMA0GCSqGSIb3DQEBCwUAMIGeMQswCQYD | ||||||
|  | VQQGEwJERTEMMAoGA1UECAwDTlJXMRQwEgYDVQQHDAtEdWVzc2VsZG9yZjEbMBkG | ||||||
|  | A1UECgwSeW91dHViZS1kbCBwcm9qZWN0MRkwFwYDVQQLDBB5b3V0dWJlLWRsIHRl | ||||||
|  | c3RzMRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG9w0BCQEWEHBoaWhhZ0Bw | ||||||
|  | aGloYWcuZGUwIBcNMTUwMTMwMDExNTA4WhgPMjExNTAxMDYwMTE1MDhaMIGeMQsw | ||||||
|  | CQYDVQQGEwJERTEMMAoGA1UECAwDTlJXMRQwEgYDVQQHDAtEdWVzc2VsZG9yZjEb | ||||||
|  | MBkGA1UECgwSeW91dHViZS1kbCBwcm9qZWN0MRkwFwYDVQQLDBB5b3V0dWJlLWRs | ||||||
|  | IHRlc3RzMRIwEAYDVQQDDAlsb2NhbGhvc3QxHzAdBgkqhkiG9w0BCQEWEHBoaWhh | ||||||
|  | Z0BwaGloYWcuZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMF0bA | ||||||
|  | zaHAdIyBHRmnIp4vv40lGqEePmWqicCl0QZ0wsb5dNysSxSa7330M2QeQopGfdaU | ||||||
|  | YF1uTcNpQx6ECgBSfg+RrOBI7r/u4F+sKX8MUXVaf/5QoBUrGNGSn/pp7HMGOuQq | ||||||
|  | O6BVg4+hA1ySSwUG8mZItLRry1ISyErmW8b9xlqfd97uLME/5tX+sMelRFjUbAx8 | ||||||
|  | A4CK58EvmMguHVTlXzx5RMdYcf1VScYcjlV/qA45uzP8zwI5aigfcmUD+tbGuQRh | ||||||
|  | KxUhmw0JaobtOR6+JSOAULW5gYa/egE4dWLwbyM6b6eFbdnjlQzEA1EW7ChMPAW/ | ||||||
|  | Mo83KyiPtKMCSQulAgMBAAGjUDBOMB0GA1UdDgQWBBTBUZoqhQkzHQ6xNgZfFxOd | ||||||
|  | ZEVt8TAfBgNVHSMEGDAWgBTBUZoqhQkzHQ6xNgZfFxOdZEVt8TAMBgNVHRMEBTAD | ||||||
|  | AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCUOCl3T/J9B08Z+ijfOJAtkbUaEHuVZb4x | ||||||
|  | 5EpZSy2ZbkLvtsftMFieHVNXn9dDswQc5qjYStCC4o60LKw4M6Y63FRsAZ/DNaqb | ||||||
|  | PY3jyCyuugZ8/sNf50vHYkAcF7SQYqOQFQX4TQsNUk2xMJIt7H0ErQFmkf/u3dg6 | ||||||
|  | cy89zkT462IwxzSG7NNhIlRkL9o5qg+Y1mF9eZA1B0rcL6hO24PPTHOd90HDChBu | ||||||
|  | SZ6XMi/LzYQSTf0Vg2R+uMIVlzSlkdcZ6sqVnnqeLL8dFyIa4e9sj/D4ZCYP8Mqe | ||||||
|  | Z73H5/NNhmwCHRqVUTgm307xblQaWGhwAiDkaRvRW2aJQ0qGEdZK | ||||||
|  | -----END CERTIFICATE----- | ||||||
| @@ -71,6 +71,11 @@ try: | |||||||
| except ImportError: | except ImportError: | ||||||
|     compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w') |     compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w') | ||||||
|  |  | ||||||
|  | try: | ||||||
|  |     import http.server as compat_http_server | ||||||
|  | except ImportError: | ||||||
|  |     import BaseHTTPServer as compat_http_server | ||||||
|  |  | ||||||
| try: | try: | ||||||
|     from urllib.parse import unquote as compat_urllib_parse_unquote |     from urllib.parse import unquote as compat_urllib_parse_unquote | ||||||
| except ImportError: | except ImportError: | ||||||
| @@ -365,6 +370,7 @@ __all__ = [ | |||||||
|     'compat_html_entities', |     'compat_html_entities', | ||||||
|     'compat_html_parser', |     'compat_html_parser', | ||||||
|     'compat_http_client', |     'compat_http_client', | ||||||
|  |     'compat_http_server', | ||||||
|     'compat_kwargs', |     'compat_kwargs', | ||||||
|     'compat_ord', |     'compat_ord', | ||||||
|     'compat_parse_qs', |     'compat_parse_qs', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister