68 lines
2.6 KiB
Python
68 lines
2.6 KiB
Python
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
|
|
storage = self.app.config['STORAGE_DIR']
|
|
self.assertEqual(os.environ['TMP'], storage)
|
|
self.assertNotIn('TEMP', os.environ)
|
|
self.assertNotIn('TMPDIR', os.environ)
|
|
|
|
handle, filename = tempfile.mkstemp()
|
|
os.close(handle)
|
|
dirname = os.path.dirname(filename)
|
|
self.assertEqual(dirname, storage)
|
|
|
|
tmpfile = tempfile.NamedTemporaryFile()
|
|
dirname = os.path.dirname(tmpfile.name)
|
|
self.assertEqual(dirname, storage)
|
|
|