def test_enforcer_force_reload_without_overwrite(self): # Prepare in memory fake policies. self.enforcer.set_rules({'test': policy.parse_rule('role:test')}, use_conf=True) self.enforcer.set_rules({'default': policy.parse_rule('role:fakeZ')}, overwrite=False, # Keeps 'test' role. use_conf=True) self.enforcer.overwrite = False # Call enforce(), it will load rules from # policy configuration files, to merge with # existing fake ones. self.assertTrue(self.enforcer.enforce("test", {}, {"roles": ["test"]})) # The existing rules have a same key with # new loaded ones will be overwrote. self.assertFalse(self.enforcer.enforce("default", {}, {"roles": ["fakeZ"]})) # Check against rule dict again from # enforcer object directly. self.assertIn('test', self.enforcer.rules) self.assertIn('default', self.enforcer.rules) self.assertIn('admin', self.enforcer.rules) loaded_rules = jsonutils.loads(str(self.enforcer.rules)) self.assertEqual(len(loaded_rules), 3) self.assertIn('role:test', loaded_rules['test']) self.assertIn('role:fakeB', loaded_rules['default']) self.assertIn('is_admin:True', loaded_rules['admin'])
def test_parse_rule_string(self, mock_parse_list_rule, mock_parse_text_rule): result = policy.parse_rule("a string") self.assertEqual(result, 'text rule') self.assertFalse(mock_parse_list_rule.called) mock_parse_text_rule.assert_called_once_with('a string')
def test_parse_rule_list(self, mock_parse_list_rule, mock_parse_text_rule): result = policy.parse_rule([['a'], ['list']]) self.assertEqual(result, 'list rule') self.assertFalse(mock_parse_text_rule.called) mock_parse_list_rule.assert_called_once_with([['a'], ['list']])