Return a friendly error when the 'id' is provided as a query parameter

This commit is contained in:
mprahl
2017-11-27 11:51:36 -05:00
parent 6c8fad0338
commit b752a9741a
2 changed files with 19 additions and 1 deletions

View File

@@ -28,7 +28,7 @@ This is the implementation of the orchestrator's public RESTful API.
import json
import module_build_service.auth
from flask import request, jsonify
from flask import request, jsonify, url_for
from flask.views import MethodView
from module_build_service import app, conf, log, models, db, version
@@ -92,6 +92,12 @@ class AbstractQueryableBuildAPI(MethodView):
@cors_header()
def get(self, id):
id_flag = request.args.get('id')
if id_flag:
endpoint = request.endpoint.split('s_list')[0]
raise ValidationError(
'The "id" query option is invalid. Did you mean to go to "{0}"?'.format(
url_for(endpoint, id=id_flag)))
verbose_flag = request.args.get('verbose', 'false').lower()
short_flag = request.args.get('short', 'false').lower()
json_func_kwargs = {}

View File

@@ -309,6 +309,18 @@ class TestViews(unittest.TestCase):
]
self.assertEquals(items, expected)
def test_query_builds_with_id_error(self):
rv = self.client.get('/module-build-service/1/module-builds/?id=1')
actual = json.loads(rv.data)
msg = ('The "id" query option is invalid. Did you mean to go to '
'"/module-build-service/1/module-builds/1"?')
expected = {
'error': 'Bad Request',
'message': msg,
"status": 400
}
self.assertEqual(actual, expected)
def test_query_component_build(self):
rv = self.client.get('/module-build-service/1/component-builds/1')
data = json.loads(rv.data)