Move fakeldap to tests

fakeldap is only used for testing, so it should be in keystone.tests.

Change-Id: Ifff8a6e7cce76e528aa72e5a3a2e7d0fcc69396b
This commit is contained in:
Brant Knudson 2013-10-06 22:10:49 -05:00
parent c3229dbb44
commit 993343320e
3 changed files with 36 additions and 14 deletions

View File

@ -19,7 +19,6 @@ import os.path
import ldap import ldap
from ldap import filter as ldap_filter from ldap import filter as ldap_filter
from keystone.common.ldap import fakeldap
from keystone import exception from keystone import exception
from keystone.openstack.common import log as logging from keystone.openstack.common import log as logging
@ -100,6 +99,21 @@ def ldap_scope(scope):
'options': ', '.join(LDAP_SCOPES.keys())}) 'options': ', '.join(LDAP_SCOPES.keys())})
_HANDLERS = {}
def register_handler(prefix, handler):
_HANDLERS[prefix] = handler
def get_handler(conn_url):
for prefix, handler in _HANDLERS.iteritems():
if conn_url.startswith(prefix):
return handler
return LdapWrapper
class BaseLdap(object): class BaseLdap(object):
DEFAULT_SUFFIX = "dc=example,dc=com" DEFAULT_SUFFIX = "dc=example,dc=com"
DEFAULT_OU = None DEFAULT_OU = None
@ -210,16 +224,15 @@ class BaseLdap(object):
return mapping return mapping
def get_connection(self, user=None, password=None): def get_connection(self, user=None, password=None):
if self.LDAP_URL.startswith('fake://'): handler = get_handler(self.LDAP_URL)
conn = fakeldap.FakeLdap(self.LDAP_URL)
else: conn = handler(self.LDAP_URL,
conn = LdapWrapper(self.LDAP_URL, self.page_size,
self.page_size, alias_dereferencing=self.alias_dereferencing,
alias_dereferencing=self.alias_dereferencing, use_tls=self.use_tls,
use_tls=self.use_tls, tls_cacertfile=self.tls_cacertfile,
tls_cacertfile=self.tls_cacertfile, tls_cacertdir=self.tls_cacertdir,
tls_cacertdir=self.tls_cacertdir, tls_req_cert=self.tls_req_cert)
tls_req_cert=self.tls_req_cert)
if user is None: if user is None:
user = self.LDAP_USER user = self.LDAP_USER

View File

@ -157,7 +157,7 @@ class FakeLdap(object):
__prefix = 'ldap:' __prefix = 'ldap:'
def __init__(self, url): def __init__(self, url, *args, **kwargs):
LOG.debug(_('FakeLdap initialize url=%s'), url) LOG.debug(_('FakeLdap initialize url=%s'), url)
if url.startswith('fake://memory'): if url.startswith('fake://memory'):
if url not in FakeShelves: if url not in FakeShelves:

View File

@ -22,13 +22,14 @@ import ldap
from keystone import assignment from keystone import assignment
from keystone.common import cache from keystone.common import cache
from keystone.common.ldap import fakeldap from keystone.common import ldap as common_ldap
from keystone.common import sql from keystone.common import sql
from keystone import config from keystone import config
from keystone import exception from keystone import exception
from keystone import identity from keystone import identity
from keystone import tests from keystone import tests
from keystone.tests import default_fixtures from keystone.tests import default_fixtures
from keystone.tests import fakeldap
from keystone.tests import test_backend from keystone.tests import test_backend
@ -339,6 +340,7 @@ class LDAPIdentity(tests.TestCase, BaseLDAPIdentity):
self._set_config() self._set_config()
self.clear_database() self.clear_database()
common_ldap.register_handler('fake://', fakeldap.FakeLdap)
self.load_backends() self.load_backends()
self.load_fixtures(default_fixtures) self.load_fixtures(default_fixtures)
@ -642,10 +644,17 @@ class LDAPIdentity(tests.TestCase, BaseLDAPIdentity):
user_api = identity.backends.ldap.UserApi(CONF) user_api = identity.backends.ldap.UserApi(CONF)
self.stubs.Set(fakeldap, 'FakeLdap', self.stubs.Set(fakeldap, 'FakeLdap',
self.mox.CreateMock(fakeldap.FakeLdap)) self.mox.CreateMock(fakeldap.FakeLdap))
common_ldap.register_handler('fake://', fakeldap.FakeLdap)
# we have to track all calls on 'conn' to make sure that # we have to track all calls on 'conn' to make sure that
# conn.simple_bind_s is not called # conn.simple_bind_s is not called
conn = self.mox.CreateMockAnything() conn = self.mox.CreateMockAnything()
conn = fakeldap.FakeLdap(CONF.ldap.url).AndReturn(conn) conn = fakeldap.FakeLdap(CONF.ldap.url,
0,
alias_dereferencing=None,
tls_cacertdir=None,
tls_cacertfile=None,
tls_req_cert=2,
use_tls=False).AndReturn(conn)
self.mox.ReplayAll() self.mox.ReplayAll()
user_api.get_connection(user=None, password=None) user_api.get_connection(user=None, password=None)