]> jfr.im git - yt-dlp.git/blob - test/test_YoutubeDLCookieJar.py
[cleanup] Misc (#10043)
[yt-dlp.git] / test / test_YoutubeDLCookieJar.py
1 #!/usr/bin/env python3
2
3 # Allow direct execution
4 import os
5 import sys
6 import unittest
7
8 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
9
10
11 import re
12 import tempfile
13
14 from yt_dlp.cookies import YoutubeDLCookieJar
15
16
17 class TestYoutubeDLCookieJar(unittest.TestCase):
18 def test_keep_session_cookies(self):
19 cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/session_cookies.txt')
20 cookiejar.load()
21 tf = tempfile.NamedTemporaryFile(delete=False)
22 try:
23 cookiejar.save(filename=tf.name)
24 temp = tf.read().decode()
25 self.assertTrue(re.search(
26 r'www\.foobar\.foobar\s+FALSE\s+/\s+TRUE\s+0\s+YoutubeDLExpiresEmpty\s+YoutubeDLExpiresEmptyValue', temp))
27 self.assertTrue(re.search(
28 r'www\.foobar\.foobar\s+FALSE\s+/\s+TRUE\s+0\s+YoutubeDLExpires0\s+YoutubeDLExpires0Value', temp))
29 finally:
30 tf.close()
31 os.remove(tf.name)
32
33 def test_strip_httponly_prefix(self):
34 cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/httponly_cookies.txt')
35 cookiejar.load()
36
37 def assert_cookie_has_value(key):
38 self.assertEqual(cookiejar._cookies['www.foobar.foobar']['/'][key].value, key + '_VALUE')
39
40 assert_cookie_has_value('HTTPONLY_COOKIE')
41 assert_cookie_has_value('JS_ACCESSIBLE_COOKIE')
42
43 def test_malformed_cookies(self):
44 cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/malformed_cookies.txt')
45 cookiejar.load()
46 # Cookies should be empty since all malformed cookie file entries
47 # will be ignored
48 self.assertFalse(cookiejar._cookies)
49
50 def test_get_cookie_header(self):
51 cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/httponly_cookies.txt')
52 cookiejar.load()
53 header = cookiejar.get_cookie_header('https://www.foobar.foobar')
54 self.assertIn('HTTPONLY_COOKIE', header)
55
56 def test_get_cookies_for_url(self):
57 cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/session_cookies.txt')
58 cookiejar.load()
59 cookies = cookiejar.get_cookies_for_url('https://www.foobar.foobar/')
60 self.assertEqual(len(cookies), 2)
61 cookies = cookiejar.get_cookies_for_url('https://foobar.foobar/')
62 self.assertFalse(cookies)
63
64
65 if __name__ == '__main__':
66 unittest.main()