diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_api.py | 197 |
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 @@ | |||
| 1 | import unittest | 1 | import unittest |
| 2 | import tempfile | 2 | import tempfile |
| 3 | import shutil | ||
| 4 | import json | 3 | import json |
| 5 | import os | 4 | import os |
| 5 | import shutil | ||
| 6 | 6 | ||
| 7 | import main | 7 | import 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 | ||
| 155 | if __name__ == '__main__': | 348 | if __name__ == '__main__': |
| 156 | unittest.main() | 349 | unittest.main() |
