summaryrefslogtreecommitdiff
path: root/test/test_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_api.py')
-rw-r--r--test/test_api.py197
1 files changed, 195 insertions, 2 deletions
diff --git a/test/test_api.py b/test/test_api.py
index de33355..b4cbd57 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -1,8 +1,8 @@
1import unittest 1import unittest
2import tempfile 2import tempfile
3import shutil
4import json 3import json
5import os 4import os
5import shutil
6 6
7import main 7import main
8 8
@@ -35,7 +35,7 @@ class Mat2APITestCase(unittest.TestCase):
35 self.assertEqual(request.status_code, 200) 35 self.assertEqual(request.status_code, 200)
36 36
37 data = json.loads(request.data.decode('utf-8')) 37 data = json.loads(request.data.decode('utf-8'))
38 expected = { 38 expected = {
39 'output_filename': 'test_name.cleaned.jpg', 39 'output_filename': 'test_name.cleaned.jpg',
40 'mime': 'image/jpeg', 40 'mime': 'image/jpeg',
41 'key': '81a541f9ebc0233d419d25ed39908b16f82be26a783f32d56c381559e84e6161', 41 'key': '81a541f9ebc0233d419d25ed39908b16f82be26a783f32d56c381559e84e6161',
@@ -151,6 +151,199 @@ class Mat2APITestCase(unittest.TestCase):
151 request = self.app.get(data['download_link']) 151 request = self.app.get(data['download_link'])
152 self.assertEqual(request.status_code, 200) 152 self.assertEqual(request.status_code, 200)
153 153
154 request = self.app.get(data['download_link'])
155 self.assertEqual(request.status_code, 404)
156
157 def test_api_bulk_download(self):
158 request = self.app.post('/api/upload',
159 data='{"file_name": "test_name.jpg", '
160 '"file": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAf'
161 'FcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="}',
162 headers={'content-type': 'application/json'}
163 )
164 self.assertEqual(request.status_code, 200)
165 upload_one = json.loads(request.data.decode('utf-8'))
166
167 request = self.app.post('/api/upload',
168 data='{"file_name": "test_name_two.jpg", '
169 '"file": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42'
170 'mO0vqpQDwAENAGxOnU0jQAAAABJRU5ErkJggg=="}',
171 headers={'content-type': 'application/json'}
172 )
173 self.assertEqual(request.status_code, 200)
174 upload_two = json.loads(request.data.decode('utf-8'))
175
176 post_body = {
177 u'download_list': [
178 {
179 u'file_name': upload_one['output_filename'],
180 u'key': upload_one['key']
181 },
182 {
183 u'file_name': upload_two['output_filename'],
184 u'key': upload_two['key']
185 }
186 ]
187 }
188 request = self.app.post('/api/download/bulk',
189 data=json.dumps(post_body),
190 headers={'content-type': 'application/json'}
191 )
192
193 response = json.loads(request.data.decode('utf-8'))
194 self.assertEqual(request.status_code, 201)
195
196 self.assertIn(
197 "http://localhost/api/download/",
198 response['download_link']
199 )
200 self.assertIn(
201 ".cleaned.zip",
202 response['download_link']
203 )
204
205 self.assertIn('files.', response['output_filename'])
206 self.assertIn('cleaned.zip', response['output_filename'])
207 self.assertIn(response['mime'], 'application/zip')
208 self.assertEqual(response['meta_after'], {})
209
210 request = self.app.get(response['download_link'])
211 self.assertEqual(request.status_code, 200)
212
213 request = self.app.get(response['download_link'])
214 self.assertEqual(request.status_code, 404)
215
216 def test_api_bulk_download_validation(self):
217 post_body = {
218 u'download_list': [
219 {
220 u'file_name': 'invalid_file_name',
221 u'key': 'invalid_key'
222 }
223 ]
224 }
225 request = self.app.post('/api/download/bulk',
226 data=json.dumps(post_body),
227 headers={'content-type': 'application/json'}
228 )
229
230 response = json.loads(request.data.decode('utf-8'))
231 self.assertEqual(response['message']['download_list'][0], 'min length is 2')
232 self.assertEqual(request.status_code, 400)
233
234 post_body = {
235 u'download_list': [
236 {
237 u'file_name': 'test.jpg',
238 u'key': 'key'
239 },
240 {
241 u'file_name': 'test.jpg',
242 u'key': 'key'
243 },
244 {
245 u'file_name': 'test.jpg',
246 u'key': 'key'
247 },
248 {
249 u'file_name': 'test.jpg',
250 u'key': 'key'
251 },
252 {
253 u'file_name': 'test.jpg',
254 u'key': 'key'
255 },
256 {
257 u'file_name': 'test.jpg',
258 u'key': 'key'
259 },
260 {
261 u'file_name': 'test.jpg',
262 u'key': 'key'
263 },
264 {
265 u'file_name': 'test.jpg',
266 u'key': 'key'
267 },
268 {
269 u'file_name': 'test.jpg',
270 u'key': 'key'
271 },
272 {
273 u'file_name': 'test.jpg',
274 u'key': 'key'
275 },
276 {
277 u'file_name': 'test.jpg',
278 u'key': 'key'
279 }
280 ]
281 }
282 request = self.app.post('/api/download/bulk',
283 data=json.dumps(post_body),
284 headers={'content-type': 'application/json'}
285 )
286
287 response = json.loads(request.data.decode('utf-8'))
288 self.assertEqual(response['message']['download_list'][0], 'max length is 10')
289 self.assertEqual(request.status_code, 400)
290
291 post_body = {
292 u'download_list': [
293 {
294 u'file_name_x': 'invalid_file_name',
295 u'key_x': 'invalid_key'
296 },
297 {
298 u'file_name_x': 'invalid_file_name',
299 u'key_x': 'invalid_key'
300 }
301 ]
302 }
303 request = self.app.post('/api/download/bulk',
304 data=json.dumps(post_body),
305 headers={'content-type': 'application/json'}
306 )
307
308 response = json.loads(request.data.decode('utf-8'))
309 expected = {
310 'message': {
311 'download_list': [
312 {
313 '0': [{
314 'file_name_x': ['unknown field'],
315 'key_x': ['unknown field']
316 }],
317 '1': [{
318 'file_name_x': ['unknown field'],
319 'key_x': ['unknown field']
320 }]
321 }
322 ]
323 }
324 }
325 self.assertEqual(response, expected)
326 self.assertEqual(request.status_code, 400)
327
328 post_body = {
329 u'download_list': [
330 {
331 u'file_name': 'invalid_file_name1',
332 u'key': 'invalid_key1'
333 },
334 {
335 u'file_name': 'invalid_file_name2',
336 u'key': 'invalid_key2'
337 }
338 ]
339 }
340 request = self.app.post('/api/download/bulk',
341 data=json.dumps(post_body),
342 headers={'content-type': 'application/json'}
343 )
344 response = json.loads(request.data.decode('utf-8'))
345 self.assertEqual('File not found', response['message'])
346
154 347
155if __name__ == '__main__': 348if __name__ == '__main__':
156 unittest.main() 349 unittest.main()