diff --git a/test.py b/test.py new file mode 100644 index 0000000..6312847 --- /dev/null +++ b/test.py @@ -0,0 +1,47 @@ +import unittest +from random import choice +from os import chdir +from os.path import join +from tempfile import TemporaryDirectory +from copy import deepcopy +from hashlib import sha256 + +from coub_dl import coub_dl, File + + +class TestCoubDl(unittest.TestCase): + def setUp(self): + self.tmpdir = TemporaryDirectory() + self.directory = self.tmpdir.name + print(self.directory) + chdir(self.directory) + self.files = deepcopy(coub_dl.default_files) + + for key in {key: self.files[key] for key in self.files if key not in coub_dl.output_files}: + self.files[key] = join(self.directory, self.files[key]) + self.files[File.OUTPUT] = 'coub.mp4' + + def tearDown(self): + self.tmpdir.cleanup() + + def test_checksums(self): + urls = {'https://coub.com/view/dshfp': 'b5e1a4b3376a08d5e0bd833c0f5a0e82fbc09100b829b43c176396d4f26e08e4', + 'https://coub.com/view/suj0d': '82895d364290f88a1ccca1ca03d1a96344501a5556d23c7193ce6107823ddbe9', + 'https://coub.com/view/ucshn': 'f70b98cf28837d58e083d523933bcca20c2de344b7f13a322c771f0a284113d7'} + test_url = choice(list(urls.keys())) + coub_dl(test_url, self.files)() + self.assertEqual(TestCoubDl.hash_file(self.files[File.OUTPUT], sha256), urls[test_url]) + + @staticmethod + def hash_file(file, hasher, read_buffer=65536): + with open(file, 'rb') as ifile: + hasher = hasher() + while True: + chunk = ifile.read(read_buffer) + if not chunk: break + hasher.update(chunk) + return hasher.hexdigest() + + +if __name__ == '__main__': + unittest.main()