diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-04 03:29:30 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-04 03:29:30 +0000 |
commit | ef2ec16cab7c07d708582e29a2ab172601d323ed (patch) | |
tree | 66bd0140094beea0ef0e8c02d96f11bac96f0740 | |
parent | 384c3f9100c4a69fe4300a1db9cd5cb233d1ed60 (diff) | |
parent | fdc150fe98be693bdc7a61b87efc492ccc693210 (diff) | |
download | keystone-ef2ec16cab7c07d708582e29a2ab172601d323ed.tar.gz |
Merge "Expose multiple SQL backend usage validation error"
-rw-r--r-- | keystone/tests/unit/identity/test_core.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/keystone/tests/unit/identity/test_core.py b/keystone/tests/unit/identity/test_core.py index 6c8faebbe..7d0a75836 100644 --- a/keystone/tests/unit/identity/test_core.py +++ b/keystone/tests/unit/identity/test_core.py @@ -12,6 +12,7 @@ """Unit tests for core identity behavior.""" +import itertools import os import uuid @@ -80,6 +81,45 @@ class TestDomainConfigs(tests.BaseTestCase): [domain_config_filename], 'abc.def.com') + def test_config_for_multiple_sql_backend(self): + domains_config = identity.DomainConfigs() + + # Create the right sequence of is_sql in the drivers being + # requested to expose the bug, which is that a False setting + # means it forgets previous True settings. + drivers = [] + files = [] + for idx, is_sql in enumerate((True, False, True)): + drv = mock.Mock(is_sql=is_sql) + drivers.append(drv) + name = 'dummy.{0}'.format(idx) + files.append(''.join(( + identity.DOMAIN_CONF_FHEAD, + name, + identity.DOMAIN_CONF_FTAIL))) + + walk_fake = lambda *a, **kwa: ( + ('/fake/keystone/domains/config', [], files), ) + + generic_driver = mock.Mock(is_sql=False) + + assignment_api = mock.Mock() + id_factory = itertools.count() + assignment_api.get_domain_by_name.side_effect = ( + lambda name: {'id': next(id_factory), '_': 'fake_domain'}) + load_driver_mock = mock.Mock(side_effect=drivers) + + with mock.patch.object(os, 'walk', walk_fake): + with mock.patch.object(identity.cfg, 'ConfigOpts'): + with mock.patch.object(domains_config, '_load_driver', + load_driver_mock): + # TODO(henry-nash): The following call should fail since + # we are asking for two sql drivers. See bug #1410850. + domains_config.setup_domain_drivers( + generic_driver, assignment_api) + + self.assertEqual(3, load_driver_mock.call_count) + class TestDatabaseDomainConfigs(tests.TestCase): |