summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-04 03:29:30 +0000
committerGerrit Code Review <review@openstack.org>2015-04-04 03:29:30 +0000
commitef2ec16cab7c07d708582e29a2ab172601d323ed (patch)
tree66bd0140094beea0ef0e8c02d96f11bac96f0740
parent384c3f9100c4a69fe4300a1db9cd5cb233d1ed60 (diff)
parentfdc150fe98be693bdc7a61b87efc492ccc693210 (diff)
downloadkeystone-ef2ec16cab7c07d708582e29a2ab172601d323ed.tar.gz
Merge "Expose multiple SQL backend usage validation error"
-rw-r--r--keystone/tests/unit/identity/test_core.py40
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):