mirror of
https://0xacab.org/jvoisin/mat2-web.git
synced 2025-05-13 03:32:18 -04:00
file removal background job
This commit is contained in:
parent
d50f68ae44
commit
7104b2107d
9 changed files with 196 additions and 19 deletions
53
test/test.py
53
test/test.py
|
@ -1,9 +1,12 @@
|
|||
import base64
|
||||
import unittest
|
||||
import tempfile
|
||||
import shutil
|
||||
import io
|
||||
import os
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
import main
|
||||
|
||||
|
||||
|
@ -62,6 +65,33 @@ class Mat2WebTestCase(unittest.TestCase):
|
|||
rv.data)
|
||||
self.assertEqual(rv.status_code, 200)
|
||||
|
||||
def test_get_upload_no_selected_file(self):
|
||||
rv = self.app.post('/',
|
||||
data=dict(
|
||||
file=(io.BytesIO(b""), ''),
|
||||
), follow_redirects=True)
|
||||
self.assertIn(b'No selected file',
|
||||
rv.data)
|
||||
self.assertEqual(rv.status_code, 200)
|
||||
|
||||
def test_failed_cleaning(self):
|
||||
zip_file_bytes = base64.b64decode(
|
||||
'UEsDBBQACAAIAPicPE8AAAAAAAAAAAAAAAAXACAAZmFpbGluZy5ub3Qtd29ya2luZy1le'
|
||||
'HRVVA0AB+Saj13kmo9d5JqPXXV4CwABBOkDAAAE6QMAAAMAUEsHCAAAAAACAAAAAAAAAFBL'
|
||||
'AwQUAAgACAD6nDxPAAAAAAAAAAAAAAAACQAgAHRlc3QuanNvblVUDQAH6JqPXeiaj13omo9d'
|
||||
'dXgLAAEE6QMAAATpAwAAAwBQSwcIAAAAAAIAAAAAAAAAUEsBAhQDFAAIAAgA+Jw8TwAAAAACA'
|
||||
'AAAAAAAABcAIAAAAAAAAAAAAKSBAAAAAGZhaWxpbmcubm90LXdvcmtpbmctZXh0VVQNAAfkmo9'
|
||||
'd5JqPXeSaj111eAsAAQTpAwAABOkDAABQSwECFAMUAAgACAD6nDxPAAAAAAIAAAAAAAAACQAgA'
|
||||
'AAAAAAAAAAApIFnAAAAdGVzdC5qc29uVVQNAAfomo9d6JqPXeiaj111eAsAAQTpAwAABOkDAAB'
|
||||
'QSwUGAAAAAAIAAgC8AAAAwAAAAAAA'
|
||||
)
|
||||
rv = self.app.post('/',
|
||||
data=dict(
|
||||
file=(io.BytesIO(zip_file_bytes), 'test.zip'),
|
||||
), follow_redirects=True)
|
||||
self.assertIn(b'Unable to clean',rv.data)
|
||||
self.assertEqual(rv.status_code, 200)
|
||||
|
||||
def test_get_upload_no_file_name(self):
|
||||
rv = self.app.post('/',
|
||||
data=dict(
|
||||
|
@ -97,6 +127,29 @@ class Mat2WebTestCase(unittest.TestCase):
|
|||
rv = self.app.get('/download/70623619c449a040968cdbea85945bf384fa30ed2d5d24fa3/test.cleaned.txt')
|
||||
self.assertEqual(rv.status_code, 302)
|
||||
|
||||
@patch('file_removal_scheduler.random.randint')
|
||||
def test_upload_leftover(self, randint_mock):
|
||||
randint_mock.return_value = 0
|
||||
os.environ['MAT2_MAX_FILE_AGE_FOR_REMOVAL'] = '0'
|
||||
app = main.create_app()
|
||||
self.upload_folder = tempfile.mkdtemp()
|
||||
app.config.update(
|
||||
TESTING=True,
|
||||
UPLOAD_FOLDER=self.upload_folder
|
||||
)
|
||||
app = app.test_client()
|
||||
|
||||
request = self.app.post('/',
|
||||
data=dict(
|
||||
file=(io.BytesIO(b"Some text"), 'test.txt'),
|
||||
), follow_redirects=True)
|
||||
self.assertEqual(request.status_code, 200)
|
||||
request = app.get(
|
||||
b'/download/4c2e9e6da31a64c70623619c449a040968cdbea85945bf384fa30ed2d5d24fa3/test.cleaned.txt'
|
||||
)
|
||||
self.assertEqual(302, request.status_code)
|
||||
os.environ['MAT2_MAX_FILE_AGE_FOR_REMOVAL'] = '9999'
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue