Fixed endpoint required parameters

Problem:
        Received HTTP 500 Internal Server Error when using PATCH or
	PUT in query without specifying alarm definition id.

        Solution:
        Modified on_patch() and on_put() so that if alarm definition id
	is not specified, query response will be HTTP 422 Unprocessible Entity.

Change-Id: I0a212f09cb76d1b4db6f129fe9ca94ec1fc274df
This commit is contained in:
Habeeb Mohammed 2017-06-06 12:51:57 -06:00
parent 0a3c219a5c
commit 3cfe84051c
2 changed files with 30 additions and 2 deletions

View File

@ -414,6 +414,26 @@ class TestAlarmDefinition(AlarmTestBase):
result_def = json.loads(result[0])
self.assertEqual(result_def, expected_def)
def test_alarm_definition_patch_no_id(self):
alarm_def = {
u'name': u'Test Alarm Definition Updated',
}
self.simulate_request("/v2.0/alarm-definitions/", headers={'X-Roles': 'admin', 'X-Tenant-Id': TENANT_ID},
method="PATCH", body=json.dumps(alarm_def))
self.assertEqual(self.srmock.status, falcon.HTTP_422)
def test_alarm_definition_update_no_id(self):
alarm_def = {
u'name': u'Test Alarm Definition Updated',
}
self.simulate_request("/v2.0/alarm-definitions/", headers={'X-Roles': 'admin', 'X-Tenant-Id': TENANT_ID},
method="PUT", body=json.dumps(alarm_def))
self.assertEqual(self.srmock.status, falcon.HTTP_422)
def test_alarm_definition_patch(self):
self.alarm_def_repo_mock.return_value.get_alarm_definitions.return_value = []
description = u'Non-ASCII character: \u2603'

View File

@ -131,7 +131,11 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
res.status = falcon.HTTP_200
@resource.resource_try_catch_block
def on_put(self, req, res, alarm_definition_id):
def on_put(self, req, res, alarm_definition_id=None):
if not alarm_definition_id:
raise HTTPUnprocessableEntityError('Unprocessable Entity',
'Alarm definition ID not provided')
helpers.validate_authorization(req, self._default_authorized_roles)
@ -169,7 +173,11 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
res.status = falcon.HTTP_200
@resource.resource_try_catch_block
def on_patch(self, req, res, alarm_definition_id):
def on_patch(self, req, res, alarm_definition_id=None):
if not alarm_definition_id:
raise HTTPUnprocessableEntityError('Unprocessable Entity',
'Alarm definition ID not provided')
helpers.validate_authorization(req, self._default_authorized_roles)