summaryrefslogtreecommitdiff
path: root/test/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test.py')
-rw-r--r--test/test.py53
1 files changed, 53 insertions, 0 deletions
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 @@
1import base64
1import unittest 2import unittest
2import tempfile 3import tempfile
3import shutil 4import shutil
4import io 5import io
5import os 6import os
6 7
8from unittest.mock import patch
9
7import main 10import main
8 11
9 12
@@ -62,6 +65,33 @@ class Mat2WebTestCase(unittest.TestCase):
62 rv.data) 65 rv.data)
63 self.assertEqual(rv.status_code, 200) 66 self.assertEqual(rv.status_code, 200)
64 67
68 def test_get_upload_no_selected_file(self):
69 rv = self.app.post('/',
70 data=dict(
71 file=(io.BytesIO(b""), ''),
72 ), follow_redirects=True)
73 self.assertIn(b'No selected file',
74 rv.data)
75 self.assertEqual(rv.status_code, 200)
76
77 def test_failed_cleaning(self):
78 zip_file_bytes = base64.b64decode(
79 'UEsDBBQACAAIAPicPE8AAAAAAAAAAAAAAAAXACAAZmFpbGluZy5ub3Qtd29ya2luZy1le'
80 'HRVVA0AB+Saj13kmo9d5JqPXXV4CwABBOkDAAAE6QMAAAMAUEsHCAAAAAACAAAAAAAAAFBL'
81 'AwQUAAgACAD6nDxPAAAAAAAAAAAAAAAACQAgAHRlc3QuanNvblVUDQAH6JqPXeiaj13omo9d'
82 'dXgLAAEE6QMAAATpAwAAAwBQSwcIAAAAAAIAAAAAAAAAUEsBAhQDFAAIAAgA+Jw8TwAAAAACA'
83 'AAAAAAAABcAIAAAAAAAAAAAAKSBAAAAAGZhaWxpbmcubm90LXdvcmtpbmctZXh0VVQNAAfkmo9'
84 'd5JqPXeSaj111eAsAAQTpAwAABOkDAABQSwECFAMUAAgACAD6nDxPAAAAAAIAAAAAAAAACQAgA'
85 'AAAAAAAAAAApIFnAAAAdGVzdC5qc29uVVQNAAfomo9d6JqPXeiaj111eAsAAQTpAwAABOkDAAB'
86 'QSwUGAAAAAAIAAgC8AAAAwAAAAAAA'
87 )
88 rv = self.app.post('/',
89 data=dict(
90 file=(io.BytesIO(zip_file_bytes), 'test.zip'),
91 ), follow_redirects=True)
92 self.assertIn(b'Unable to clean',rv.data)
93 self.assertEqual(rv.status_code, 200)
94
65 def test_get_upload_no_file_name(self): 95 def test_get_upload_no_file_name(self):
66 rv = self.app.post('/', 96 rv = self.app.post('/',
67 data=dict( 97 data=dict(
@@ -97,6 +127,29 @@ class Mat2WebTestCase(unittest.TestCase):
97 rv = self.app.get('/download/70623619c449a040968cdbea85945bf384fa30ed2d5d24fa3/test.cleaned.txt') 127 rv = self.app.get('/download/70623619c449a040968cdbea85945bf384fa30ed2d5d24fa3/test.cleaned.txt')
98 self.assertEqual(rv.status_code, 302) 128 self.assertEqual(rv.status_code, 302)
99 129
130 @patch('file_removal_scheduler.random.randint')
131 def test_upload_leftover(self, randint_mock):
132 randint_mock.return_value = 0
133 os.environ['MAT2_MAX_FILE_AGE_FOR_REMOVAL'] = '0'
134 app = main.create_app()
135 self.upload_folder = tempfile.mkdtemp()
136 app.config.update(
137 TESTING=True,
138 UPLOAD_FOLDER=self.upload_folder
139 )
140 app = app.test_client()
141
142 request = self.app.post('/',
143 data=dict(
144 file=(io.BytesIO(b"Some text"), 'test.txt'),
145 ), follow_redirects=True)
146 self.assertEqual(request.status_code, 200)
147 request = app.get(
148 b'/download/4c2e9e6da31a64c70623619c449a040968cdbea85945bf384fa30ed2d5d24fa3/test.cleaned.txt'
149 )
150 self.assertEqual(302, request.status_code)
151 os.environ['MAT2_MAX_FILE_AGE_FOR_REMOVAL'] = '9999'
152
100 153
101if __name__ == '__main__': 154if __name__ == '__main__':
102 unittest.main() 155 unittest.main()