Load resource filter config file in testcase

Add testcase to ensure required filter keys exist
in config file.

Change-Id: I48a502ca9665c77725c634dd4e878bd48166988d
This commit is contained in:
TommyLike 2017-08-07 20:38:15 +08:00
parent 71a97f3470
commit 58215fe7d3
3 changed files with 44 additions and 14 deletions

View File

@ -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()

View File

@ -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'}},

View File

@ -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'])