Merge "Fix for resource search with invalid filter keys"

This commit is contained in:
Jenkins
2016-03-09 12:46:10 +00:00
committed by Gerrit Code Review
2 changed files with 27 additions and 0 deletions

View File

@@ -105,6 +105,13 @@ class ResourceController(object):
'physical_resource_id': 'mixed'
}
invalid_keys = (set(req.params.keys()) -
set(list(whitelist) + [rpc_api.PARAM_NESTED_DEPTH,
rpc_api.PARAM_WITH_DETAIL]))
if invalid_keys:
raise exc.HTTPBadRequest(_('Invalid filter parameters %s') %
six.text_type(list(invalid_keys)))
nested_depth = self._extract_to_param(req,
rpc_api.PARAM_NESTED_DEPTH,
param_utils.extract_int,

View File

@@ -132,6 +132,26 @@ class ResourceControllerTest(tools.ControllerTest, common.HeatTestCase):
self.assertEqual('EntityNotFound', resp.json['error']['type'])
self.m.VerifyAll()
def test_index_invalid_filters(self, mock_enforce):
self._mock_enforce_setup(mock_enforce, 'index', True)
stack_identity = identifier.HeatIdentifier(self.tenant,
'rubbish', '1')
req = self._get(stack_identity._tenant_path() + '/resources',
{'invalid_key': 'junk'})
mock_call = self.patchobject(rpc_client.EngineClient, 'call')
ex = self.assertRaises(webob.exc.HTTPBadRequest,
self.controller.index, req,
tenant_id=self.tenant,
stack_name=stack_identity.stack_name,
stack_id=stack_identity.stack_id)
self.assertIn("Invalid filter parameters %s" %
[six.text_type('invalid_key')],
six.text_type(ex))
self.assertFalse(mock_call.called)
def test_index_nested_depth(self, mock_enforce):
self._mock_enforce_setup(mock_enforce, 'index', True)
stack_identity = identifier.HeatIdentifier(self.tenant,