diff options
| -rw-r--r-- | matweb/rest_api.py | 6 | ||||
| -rw-r--r-- | test/test_api.py | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/matweb/rest_api.py b/matweb/rest_api.py index d44d838..48dcc10 100644 --- a/matweb/rest_api.py +++ b/matweb/rest_api.py | |||
| @@ -26,8 +26,12 @@ class APIUpload(Resource): | |||
| 26 | req_parser = reqparse.RequestParser() | 26 | req_parser = reqparse.RequestParser() |
| 27 | req_parser.add_argument('file_name', type=str, required=True, help='Post parameter is not specified: file_name') | 27 | req_parser.add_argument('file_name', type=str, required=True, help='Post parameter is not specified: file_name') |
| 28 | req_parser.add_argument('file', type=str, required=True, help='Post parameter is not specified: file') | 28 | req_parser.add_argument('file', type=str, required=True, help='Post parameter is not specified: file') |
| 29 | try: | ||
| 30 | args = req_parser.parse_args() | ||
| 31 | except ValueError as e: | ||
| 32 | current_app.logger.error('Upload - failed parsing arguments %s', e) | ||
| 33 | abort(400, message='Failed parsing body') | ||
| 29 | 34 | ||
| 30 | args = req_parser.parse_args() | ||
| 31 | try: | 35 | try: |
| 32 | file_data = base64.b64decode(args['file']) | 36 | file_data = base64.b64decode(args['file']) |
| 33 | except (binascii.Error, ValueError) as e: | 37 | except (binascii.Error, ValueError) as e: |
diff --git a/test/test_api.py b/test/test_api.py index 8be165e..878b0ab 100644 --- a/test/test_api.py +++ b/test/test_api.py | |||
| @@ -432,6 +432,14 @@ class Mat2APITestCase(unittest.TestCase): | |||
| 432 | self.assertEqual(400, request.status_code) | 432 | self.assertEqual(400, request.status_code) |
| 433 | self.assertEqual("Failed decoding file", error_message) | 433 | self.assertEqual("Failed decoding file", error_message) |
| 434 | 434 | ||
| 435 | request = self.app.post('/api/upload', | ||
| 436 | data="\"\'\'\'&&cat$z $z/etc$z/passwdu0000\"", | ||
| 437 | headers={'content-type': 'application/json'} | ||
| 438 | ) | ||
| 439 | error_message = request.get_json()['message'] | ||
| 440 | self.assertEqual(400, request.status_code) | ||
| 441 | self.assertEqual("Failed parsing body", error_message) | ||
| 442 | |||
| 435 | def test_valid_opena_api_spec(self): | 443 | def test_valid_opena_api_spec(self): |
| 436 | spec = self.app.get('apispec_1.json').get_json() | 444 | spec = self.app.get('apispec_1.json').get_json() |
| 437 | validate_spec(spec) | 445 | validate_spec(spec) |
