diff options
Diffstat (limited to 'keystone/test.py')
-rw-r--r-- | keystone/test.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/keystone/test.py b/keystone/test.py index 2c2be577..9118b2ea 100644 --- a/keystone/test.py +++ b/keystone/test.py @@ -38,6 +38,7 @@ environment.use_eventlet() from keystone import assignment from keystone import catalog +from keystone.common import dependency from keystone.common import kvs from keystone.common import logging from keystone.common import sql @@ -51,6 +52,7 @@ from keystone import identity from keystone.openstack.common import timeutils from keystone import policy from keystone import token +from keystone.token import provider as token_provider from keystone import trust @@ -240,6 +242,11 @@ class TestCase(NoModule, unittest.TestCase): for path in self._paths: if path in sys.path: sys.path.remove(path) + + # Clear the registry of providers so that providers from previous + # tests aren't used. + dependency.reset() + kvs.INMEMDB.clear() CONF.reset() @@ -253,11 +260,28 @@ class TestCase(NoModule, unittest.TestCase): def load_backends(self): """Initializes each manager and assigns them to an attribute.""" - for manager in [assignment, catalog, credential, ec2, identity, policy, - token, trust]: - manager_name = '%s_api' % manager.__name__.split('.')[-1] + + # TODO(blk-u): Shouldn't need to clear the registry here, but some + # tests call load_backends multiple times. These should be fixed to + # only call load_backends once. + dependency.reset() + + # NOTE(blk-u): identity must be before assignment to ensure that the + # identity driver is available to the assignment manager because the + # assignment manager gets the default assignment driver from the + # identity driver. + for manager in [identity, assignment, catalog, credential, ec2, policy, + token, token_provider, trust]: + # manager.__name__ is like keystone.xxx[.yyy], + # converted to xxx[_yyy] + manager_name = ('%s_api' % + manager.__name__.replace('keystone.', ''). + replace('.', '_')) + setattr(self, manager_name, manager.Manager()) + dependency.resolve_future_dependencies() + def load_fixtures(self, fixtures): """Hacky basic and naive fixture loading based on a python module. |