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:
parent
df5d80759e
commit
3eb921578a
@ -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)
|
||||
|
||||
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user