diff --git a/oslo_policy/generator.py b/oslo_policy/generator.py index 9e283d9e..fad156e8 100644 --- a/oslo_policy/generator.py +++ b/oslo_policy/generator.py @@ -334,9 +334,11 @@ def on_load_failure_callback(*args, **kwargs): raise -def generate_sample(args=None): +def generate_sample(args=None, conf=None): logging.basicConfig(level=logging.WARN) - conf = cfg.ConfigOpts() + # Allow the caller to pass in a local conf object for unit testing + if conf is None: + conf = cfg.CONF conf.register_cli_opts(GENERATOR_OPTS + RULE_OPTS) conf.register_opts(GENERATOR_OPTS + RULE_OPTS) conf(args) @@ -345,7 +347,7 @@ def generate_sample(args=None): def generate_policy(args=None): logging.basicConfig(level=logging.WARN) - conf = cfg.ConfigOpts() + conf = cfg.CONF conf.register_cli_opts(GENERATOR_OPTS + ENFORCER_OPTS) conf.register_opts(GENERATOR_OPTS + ENFORCER_OPTS) conf(args) @@ -367,9 +369,11 @@ def _upgrade_policies(policies, default_policies): 'new_name': rule_default.name}) -def upgrade_policy(args=None): +def upgrade_policy(args=None, conf=None): logging.basicConfig(level=logging.WARN) - conf = cfg.ConfigOpts() + # Allow the caller to pass in a local conf object for unit testing + if conf is None: + conf = cfg.CONF conf.register_cli_opts(GENERATOR_OPTS + RULE_OPTS + UPGRADE_OPTS) conf.register_opts(GENERATOR_OPTS + RULE_OPTS + UPGRADE_OPTS) conf(args) @@ -396,7 +400,7 @@ def upgrade_policy(args=None): def list_redundant(args=None): logging.basicConfig(level=logging.WARN) - conf = cfg.ConfigOpts() + conf = cfg.CONF conf.register_cli_opts(ENFORCER_OPTS) conf.register_opts(ENFORCER_OPTS) conf(args) diff --git a/oslo_policy/tests/test_generator.py b/oslo_policy/tests/test_generator.py index a0beeaee..147ef2d7 100644 --- a/oslo_policy/tests/test_generator.py +++ b/oslo_policy/tests/test_generator.py @@ -500,8 +500,9 @@ class GeneratorRaiseErrorTestCase(testtools.TestCase): def test_generator_call_with_no_arguments_raises_error(self): testargs = ['oslopolicy-sample-generator'] with mock.patch('sys.argv', testargs): + local_conf = cfg.ConfigOpts() self.assertRaises(cfg.RequiredOptError, generator.generate_sample, - []) + [], local_conf) class GeneratePolicyTestCase(base.PolicyBaseTestCase): @@ -655,6 +656,8 @@ class UpgradePolicyTestCase(base.PolicyBaseTestCase): plugin=None, obj=[self.new_policy]) self.extensions.append(ext) + # Just used for cli opt parsing + self.local_conf = cfg.ConfigOpts() def test_upgrade_policy_json_file(self): test_mgr = stevedore.named.NamedExtensionManager.make_test_instance( @@ -669,7 +672,7 @@ class UpgradePolicyTestCase(base.PolicyBaseTestCase): self.get_config_file_fullname('new_policy.json'), '--format', 'json'] with mock.patch('sys.argv', testargs): - generator.upgrade_policy() + generator.upgrade_policy(conf=self.local_conf) new_file = self.get_config_file_fullname('new_policy.json') new_policy = jsonutils.loads(open(new_file, 'r').read()) self.assertIsNotNone(new_policy.get('new_policy_name')) @@ -688,7 +691,7 @@ class UpgradePolicyTestCase(base.PolicyBaseTestCase): self.get_config_file_fullname('new_policy.yaml'), '--format', 'yaml'] with mock.patch('sys.argv', testargs): - generator.upgrade_policy() + generator.upgrade_policy(conf=self.local_conf) new_file = self.get_config_file_fullname('new_policy.yaml') new_policy = yaml.safe_load(open(new_file, 'r')) self.assertIsNotNone(new_policy.get('new_policy_name')) @@ -706,7 +709,7 @@ class UpgradePolicyTestCase(base.PolicyBaseTestCase): '--namespace', 'test_upgrade', '--format', 'json'] with mock.patch('sys.argv', testargs): - generator.upgrade_policy() + generator.upgrade_policy(conf=self.local_conf) expected = '''{ "new_policy_name": "rule:admin" }''' @@ -724,7 +727,7 @@ class UpgradePolicyTestCase(base.PolicyBaseTestCase): '--namespace', 'test_upgrade', '--format', 'yaml'] with mock.patch('sys.argv', testargs): - generator.upgrade_policy() + generator.upgrade_policy(conf=self.local_conf) expected = '''new_policy_name: rule:admin ''' self.assertEqual(expected, stdout.getvalue())