mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-03 19:23:44 +00:00 
			
		
		
		
	+ Add support for UTF-8 in cookie files * Skip malformed cookie file entries instead of crashing (invalid entry len, invalid expires at)
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python
 | 
						|
# coding: utf-8
 | 
						|
 | 
						|
from __future__ import unicode_literals
 | 
						|
 | 
						|
import os
 | 
						|
import re
 | 
						|
import sys
 | 
						|
import tempfile
 | 
						|
import unittest
 | 
						|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 | 
						|
 | 
						|
from youtube_dl.utils import YoutubeDLCookieJar
 | 
						|
 | 
						|
 | 
						|
class TestYoutubeDLCookieJar(unittest.TestCase):
 | 
						|
    def test_keep_session_cookies(self):
 | 
						|
        cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/session_cookies.txt')
 | 
						|
        cookiejar.load(ignore_discard=True, ignore_expires=True)
 | 
						|
        tf = tempfile.NamedTemporaryFile(delete=False)
 | 
						|
        try:
 | 
						|
            cookiejar.save(filename=tf.name, ignore_discard=True, ignore_expires=True)
 | 
						|
            temp = tf.read().decode('utf-8')
 | 
						|
            self.assertTrue(re.search(
 | 
						|
                r'www\.foobar\.foobar\s+FALSE\s+/\s+TRUE\s+0\s+YoutubeDLExpiresEmpty\s+YoutubeDLExpiresEmptyValue', temp))
 | 
						|
            self.assertTrue(re.search(
 | 
						|
                r'www\.foobar\.foobar\s+FALSE\s+/\s+TRUE\s+0\s+YoutubeDLExpires0\s+YoutubeDLExpires0Value', temp))
 | 
						|
        finally:
 | 
						|
            tf.close()
 | 
						|
            os.remove(tf.name)
 | 
						|
 | 
						|
    def test_strip_httponly_prefix(self):
 | 
						|
        cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/httponly_cookies.txt')
 | 
						|
        cookiejar.load(ignore_discard=True, ignore_expires=True)
 | 
						|
 | 
						|
        def assert_cookie_has_value(key):
 | 
						|
            self.assertEqual(cookiejar._cookies['www.foobar.foobar']['/'][key].value, key + '_VALUE')
 | 
						|
 | 
						|
        assert_cookie_has_value('HTTPONLY_COOKIE')
 | 
						|
        assert_cookie_has_value('JS_ACCESSIBLE_COOKIE')
 | 
						|
 | 
						|
    def test_malformed_cookies(self):
 | 
						|
        cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/malformed_cookies.txt')
 | 
						|
        cookiejar.load(ignore_discard=True, ignore_expires=True)
 | 
						|
        # Cookies should be empty since all malformed cookie file entries
 | 
						|
        # will be ignored
 | 
						|
        self.assertFalse(cookiejar._cookies)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    unittest.main()
 |