Merge "Fix 500 error when filtering by invalid version string"
This commit is contained in:
commit
f4d46d1c34
@ -114,6 +114,13 @@ class ArtifactsController(object):
|
|||||||
filter['value'] = self._get_latest_version(
|
filter['value'] = self._get_latest_version(
|
||||||
req, filters['name'][0]['value'], type_name,
|
req, filters['name'][0]['value'], type_name,
|
||||||
type_version)
|
type_version)
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
semantic_version.Version(filter['value'], partial=True)
|
||||||
|
except ValueError:
|
||||||
|
msg = (_('The format of the version %s is not valid. '
|
||||||
|
'Use semver notation') % filter['value'])
|
||||||
|
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||||
|
|
||||||
res = artifact_repo.list(filters=filters,
|
res = artifact_repo.list(filters=filters,
|
||||||
show_level=Showlevel.BASIC,
|
show_level=Showlevel.BASIC,
|
||||||
|
@ -1956,3 +1956,12 @@ paste.filter_factory = glance.tests.utils:FakeAuthMiddleware.factory
|
|||||||
result = self._check_artifact_get(url=url)['artifacts']
|
result = self._check_artifact_get(url=url)['artifacts']
|
||||||
|
|
||||||
self.assertEqual(1, len(result))
|
self.assertEqual(1, len(result))
|
||||||
|
|
||||||
|
def test_filter_by_bad_version(self):
|
||||||
|
bad_versions = ['kkk', '1.k', 'h.0', '1.3.hf', 's.9.2s2']
|
||||||
|
response_string = ('The format of the version %s is not valid. '
|
||||||
|
'Use semver notation')
|
||||||
|
for bad_version in bad_versions:
|
||||||
|
url = '/withprops/v1.0/drafts?version=gt:%s' % bad_version
|
||||||
|
result = self._check_artifact_get(url=url, status=400)
|
||||||
|
self.assertIn(response_string % bad_version, result)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user