From 7104b2107db592756f4090ba772869eb86d6a44f Mon Sep 17 00:00:00 2001 From: jfriedli Date: Fri, 27 Mar 2020 10:59:16 -0700 Subject: file removal background job --- test/test.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'test/test.py') diff --git a/test/test.py b/test/test.py index 34245d9..a7e6627 100644 --- a/test/test.py +++ b/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() -- cgit v1.3