Do not use global enforcer for tests

Have each test instantiate its own enforcer object with a private
configuration.

Change-Id: I5eb354f0149be4bd4ec3eeb46ce9274b04781c9a
This commit is contained in:
Doug Hellmann 2015-02-05 13:15:47 -05:00 committed by Steve Martinelli
parent df5d80759e
commit 3eb921578a
2 changed files with 13 additions and 24 deletions

View File

@ -14,7 +14,7 @@
# under the License.
import os.path
from oslo_concurrency.fixture import lockutils
from oslo_config import cfg
from oslo_config import fixture as config
from oslotest import base as test_base
@ -23,19 +23,15 @@ from oslo_policy import policy
TEST_VAR_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__),
'..', 'tests/var'))
ENFORCER = policy.Enforcer(cfg.CONF)
class PolicyBaseTestCase(test_base.BaseTestCase):
def setUp(self):
super(PolicyBaseTestCase, self).setUp()
# NOTE(bnemec): Many of these tests use the same ENFORCER object, so
# I believe we need to serialize them.
self.useFixture(lockutils.LockFixture('policy-lock'))
self.CONF = self.useFixture(config.Config()).conf
self.CONF(args=['--config-dir', TEST_VAR_DIR])
self.enforcer = ENFORCER
self.enforcer = policy.Enforcer(cfg.CONF)
self.addCleanup(self.enforcer.clear)

View File

@ -26,9 +26,6 @@ from oslo_policy import policy
from oslo_policy.tests import base
ENFORCER = base.ENFORCER
class CheckRegisterTestCase(test_base.BaseTestCase):
@mock.patch.object(_checks, 'registered_checks', {})
def test_register_check(self):
@ -48,33 +45,29 @@ class CheckRegisterTestCase(test_base.BaseTestCase):
self.assertEqual(_checks.registered_checks, dict(spam=TestCheck))
class RuleCheckTestCase(test_base.BaseTestCase):
@mock.patch.object(ENFORCER, 'rules', {})
class RuleCheckTestCase(base.PolicyBaseTestCase):
def test_rule_missing(self):
self.enforcer.rules = {}
check = _checks.RuleCheck('rule', 'spam')
self.assertEqual(check('target', 'creds', ENFORCER), False)
self.assertEqual(check('target', 'creds', self.enforcer), False)
@mock.patch.object(ENFORCER, 'rules',
dict(spam=mock.Mock(return_value=False)))
def test_rule_false(self):
enforcer = ENFORCER
self.enforcer.rules = dict(spam=mock.Mock(return_value=False))
check = _checks.RuleCheck('rule', 'spam')
self.assertEqual(check('target', 'creds', enforcer), False)
enforcer.rules['spam'].assert_called_once_with('target', 'creds',
enforcer)
self.assertEqual(check('target', 'creds', self.enforcer), False)
self.enforcer.rules['spam'].assert_called_once_with('target', 'creds',
self.enforcer)
@mock.patch.object(ENFORCER, 'rules',
dict(spam=mock.Mock(return_value=True)))
def test_rule_true(self):
enforcer = ENFORCER
self.enforcer.rules = dict(spam=mock.Mock(return_value=True))
check = _checks.RuleCheck('rule', 'spam')
self.assertEqual(check('target', 'creds', enforcer), True)
enforcer.rules['spam'].assert_called_once_with('target', 'creds',
enforcer)
self.assertEqual(check('target', 'creds', self.enforcer), True)
self.enforcer.rules['spam'].assert_called_once_with('target', 'creds',
self.enforcer)
class RoleCheckTestCase(base.PolicyBaseTestCase):