diff --git a/tests/test_file_storage.py b/tests/test_file_storage.py index decacd81..b1cdfb88 100644 --- a/tests/test_file_storage.py +++ b/tests/test_file_storage.py @@ -1,9 +1,53 @@ import os import tempfile +from werkzeug.datastructures import FileStorage + from common_test_class import AbstractPillarTest +class FileStorageTest(AbstractPillarTest): + def fake_file(self, filename, content_type): + return FileStorage(filename=filename, + name='file', # form field name + content_type=content_type) + + def test_override_content_type(self): + from application.modules.file_storage import override_content_type + + fake = self.fake_file('compressed.blend', 'jemoeder') + override_content_type(fake) + self.assertEqual('application/x-blend', fake.content_type) + self.assertEqual('application/x-blend', fake.mimetype) + + fake = self.fake_file('blend.mp3', 'application/octet-stream') + override_content_type(fake) + self.assertEqual('audio/mpeg', fake.content_type) + self.assertEqual('audio/mpeg', fake.mimetype) + + # Official one is audio/mpeg, but if the browser gives audio/XXX, it should + # just be used. + fake = self.fake_file('blend.mp3', 'audio/mp3') + override_content_type(fake) + self.assertEqual('audio/mp3', fake.content_type) + self.assertEqual('audio/mp3', fake.mimetype) + + fake = self.fake_file('mp3.mkv', 'application/octet-stream') + override_content_type(fake) + self.assertEqual('video/x-matroska', fake.content_type) + self.assertEqual('video/x-matroska', fake.mimetype) + + fake = self.fake_file('mkv.mp3.avi.mp4', 'application/octet-stream') + override_content_type(fake) + self.assertEqual('video/mp4', fake.content_type) + self.assertEqual('video/mp4', fake.mimetype) + + fake = self.fake_file('mkv.mp3.avi.mp4.unknown', 'application/awesome-type') + override_content_type(fake) + self.assertEqual('application/awesome-type', fake.content_type) + self.assertEqual('application/awesome-type', fake.mimetype) + + class TempDirTest(AbstractPillarTest): def test_tempfiles_location(self): # After importing the application, tempfiles should be created in the STORAGE_DIR