Merge "Prevent alarm_id in query field of getting history"

This commit is contained in:
Jenkins
2014-04-09 08:35:47 +00:00
committed by Gerrit Code Review
2 changed files with 28 additions and 1 deletions

View File

@@ -1966,7 +1966,8 @@ class AlarmController(rest.RestController):
# avoid inappropriate cross-tenant visibility of alarm history
auth_project = acl.get_limited_to_project(pecan.request.headers)
conn = pecan.request.storage_conn
kwargs = _query_to_kwargs(q, conn.get_alarm_changes, ['on_behalf_of'])
kwargs = _query_to_kwargs(q, conn.get_alarm_changes, ['on_behalf_of',
'alarm_id'])
return [AlarmChange.from_db_model(ac)
for ac in conn.get_alarm_changes(self._id, auth_project,
**kwargs)]

View File

@@ -1671,6 +1671,32 @@ class TestAlarms(FunctionalTest,
del alarm['threshold_rule']
self._assert_in_json(alarm, history[0]['detail'])
def test_get_alarm_history_constrained_by_alarm_id_failed(self):
alarm = self._get_alarm('b')
query = dict(field='alarm_id', op='eq', value='b')
resp = self._get_alarm_history(alarm, query=query,
expect_errors=True, status=400)
self.assertEqual('Unknown argument: "alarm_id": unrecognized'
' field in query: [<Query u\'alarm_id\' eq'
' u\'b\' Unset>], valid keys: set('
'[\'start_timestamp\', \'end_timestamp_op\','
' \'project\', \'user\', \'start_timestamp_op\''
', \'type\', \'end_timestamp\'])',
resp.json['error_message']['faultstring'])
def test_get_alarm_history_constrained_by_not_supported_rule(self):
alarm = self._get_alarm('b')
query = dict(field='abcd', op='eq', value='abcd')
resp = self._get_alarm_history(alarm, query=query,
expect_errors=True, status=400)
self.assertEqual('Unknown argument: "abcd": unrecognized'
' field in query: [<Query u\'abcd\' eq'
' u\'abcd\' Unset>], valid keys: set('
'[\'start_timestamp\', \'end_timestamp_op\','
' \'project\', \'user\', \'start_timestamp_op\''
', \'type\', \'end_timestamp\'])',
resp.json['error_message']['faultstring'])
def test_get_nonexistent_alarm_history(self):
# the existence of alarm history is independent of the
# continued existence of the alarm itself