summaryrefslogtreecommitdiffstats
path: root/keystone/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone/test.py')
-rw-r--r--keystone/test.py31
1 files changed, 28 insertions, 3 deletions
diff --git a/keystone/test.py b/keystone/test.py
index 0c51d76d..9118b2ea 100644
--- a/keystone/test.py
+++ b/keystone/test.py
@@ -38,18 +38,21 @@ 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
from keystone.common import utils
from keystone.common import wsgi
from keystone import config
+from keystone.contrib import ec2
from keystone import credential
from keystone import exception
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
@@ -239,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()
@@ -252,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, 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.