diff --git a/cinder/test.py b/cinder/test.py index d0821be636e..1defd495ab6 100644 --- a/cinder/test.py +++ b/cinder/test.py @@ -92,6 +92,7 @@ class TestCase(testtools.TestCase): """Test case base class for all unit tests.""" POLICY_PATH = 'cinder/tests/unit/policy.json' + RESOURCE_FILTER_PATH = 'etc/cinder/resource_filters.json' MOCK_WORKER = True MOCK_TOOZ = True @@ -232,7 +233,15 @@ class TestCase(testtools.TestCase): ), self.POLICY_PATH), group='oslo_policy') - + self.override_config('resource_query_filters_file', + os.path.join( + os.path.abspath( + os.path.join( + os.path.dirname(__file__), + '..', + ) + ), + self.RESOURCE_FILTER_PATH)) self._disable_osprofiler() self._disallow_invalid_uuids() diff --git a/cinder/tests/unit/api/test_common.py b/cinder/tests/unit/api/test_common.py index 0a8f62448e5..b669010b9e3 100644 --- a/cinder/tests/unit/api/test_common.py +++ b/cinder/tests/unit/api/test_common.py @@ -372,9 +372,9 @@ class GeneralFiltersTest(test.TestCase): 'expected': {'volume': ['key1', 'key2']}}) @ddt.unpack def test_get_enabled_resource_filters(self, filters, resource, expected): - common._FILTERS_COLLECTION = filters - result = common.get_enabled_resource_filters(resource) - self.assertEqual(expected, result) + with mock.patch('cinder.api.common._FILTERS_COLLECTION', filters): + result = common.get_enabled_resource_filters(resource) + self.assertEqual(expected, result) @ddt.data({'filters': {'key1': 'value1'}, 'is_admin': False, @@ -459,6 +459,28 @@ class GeneralFiltersTest(test.TestCase): common.reject_invalid_filters, fake_context, filters, 'fake_resource') + @ddt.data({'resource': 'volume', + 'expected': ["name", "status", "metadata", + "bootable", "migration_status", + "availability_zone", "group_id"]}, + {'resource': 'backup', + 'expected': ["name", "status", "volume_id"]}, + {'resource': 'snapshot', + 'expected': ["name", "status", "volume_id", "metadata"]}, + {'resource': 'group_snapshot', + 'expected': ["status", "group_id"]}, + {'resource': 'attachment', + 'expected': ["volume_id", "status", "instance_id", + "attach_status"]}, + {'resource': 'message', + 'expected': ["resource_uuid", "resource_type", "event_id", + "request_id", "message_level"]}, + {'resource': 'pool', 'expected': ["name", "volume_type"]}) + @ddt.unpack + def test_filter_keys_exists(self, resource, expected): + result = common.get_enabled_resource_filters(resource) + self.assertEqual(expected, result[resource]) + @ddt.data({'resource': 'group', 'filters': {'name~': 'value'}, 'expected': {'name~': 'value'}}, diff --git a/cinder/tests/unit/api/v3/test_resource_filters.py b/cinder/tests/unit/api/v3/test_resource_filters.py index e514f949a3d..917f1f996c5 100644 --- a/cinder/tests/unit/api/v3/test_resource_filters.py +++ b/cinder/tests/unit/api/v3/test_resource_filters.py @@ -15,9 +15,9 @@ Tests for resource filters API. """ import ddt +import mock import six -from cinder.api import common from cinder.api.v3 import resource_filters as v3_filters from cinder import test from cinder.tests.unit.api import fakes @@ -49,18 +49,17 @@ class ResourceFiltersAPITestCase(test.TestCase): 'expected_filters': []}) @ddt.unpack def test_get_allowed_filters(self, filters, resource, expected_filters): - common._FILTERS_COLLECTION = filters request_url = '/v3/%s/resource_filters' % fake.PROJECT_ID if resource is not None: request_url += '?resource=%s' % resource req = fakes.HTTPRequest.blank(request_url, version=FILTERS_MICRO_VERSION) - result = self.controller.index(req) - - six.assertCountEqual(self, - list(six.viewkeys(result)), - ['resource_filters']) - six.assertCountEqual(self, - expected_filters, - result['resource_filters']) + with mock.patch('cinder.api.common._FILTERS_COLLECTION', filters): + result = self.controller.index(req) + six.assertCountEqual(self, + list(six.viewkeys(result)), + ['resource_filters']) + six.assertCountEqual(self, + expected_filters, + result['resource_filters'])