]>
Commit | Line | Data |
---|---|---|
83fda3c0 PH |
1 | #!/usr/bin/env python |
2 | from __future__ import unicode_literals | |
3 | ||
4 | # Allow direct execution | |
5 | import os | |
6 | import sys | |
7 | import unittest | |
8 | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
9 | ||
10 | from youtube_dl import YoutubeDL | |
11 | from youtube_dl.compat import compat_http_server | |
12 | import ssl | |
13 | import threading | |
14 | ||
15 | TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | |
16 | ||
03d8d4df | 17 | |
83fda3c0 PH |
18 | class HTTPTestRequestHandler(compat_http_server.BaseHTTPRequestHandler): |
19 | def log_message(self, format, *args): | |
20 | pass | |
21 | ||
22 | def do_GET(self): | |
23 | if self.path == '/video.html': | |
24 | self.send_response(200) | |
25 | self.send_header('Content-Type', 'text/html; charset=utf-8') | |
26 | self.end_headers() | |
27 | self.wfile.write(b'<html><video src="/vid.mp4" /></html>') | |
28 | elif self.path == '/vid.mp4': | |
29 | self.send_response(200) | |
30 | self.send_header('Content-Type', 'video/mp4') | |
31 | self.end_headers() | |
32 | self.wfile.write(b'\x00\x00\x00\x00\x20\x66\x74[video]') | |
33 | else: | |
34 | assert False | |
35 | ||
36 | ||
37 | class FakeLogger(object): | |
38 | def debug(self, msg): | |
39 | pass | |
40 | ||
41 | def warning(self, msg): | |
42 | pass | |
43 | ||
44 | def error(self, msg): | |
45 | pass | |
46 | ||
47 | ||
48 | class TestHTTP(unittest.TestCase): | |
49 | def setUp(self): | |
50 | certfn = os.path.join(TEST_DIR, 'testcert.pem') | |
51 | self.httpd = compat_http_server.HTTPServer( | |
52 | ('localhost', 0), HTTPTestRequestHandler) | |
53 | self.httpd.socket = ssl.wrap_socket( | |
54 | self.httpd.socket, certfile=certfn, server_side=True) | |
55 | self.port = self.httpd.socket.getsockname()[1] | |
56 | self.server_thread = threading.Thread(target=self.httpd.serve_forever) | |
57 | self.server_thread.daemon = True | |
58 | self.server_thread.start() | |
59 | ||
60 | def test_nocheckcertificate(self): | |
61 | if sys.version_info >= (2, 7, 9): # No certificate checking anyways | |
62 | ydl = YoutubeDL({'logger': FakeLogger()}) | |
63 | self.assertRaises( | |
64 | Exception, | |
65 | ydl.extract_info, 'https://localhost:%d/video.html' % self.port) | |
66 | ||
67 | ydl = YoutubeDL({'logger': FakeLogger(), 'nocheckcertificate': True}) | |
68 | r = ydl.extract_info('https://localhost:%d/video.html' % self.port) | |
69 | self.assertEqual(r['url'], 'https://localhost:%d/vid.mp4' % self.port) | |
70 | ||
71 | if __name__ == '__main__': | |
72 | unittest.main() |