Skip to content

Commit

Permalink
add passing attributes list to backend
Browse files Browse the repository at this point in the history
  • Loading branch information
kakwa committed May 22, 2015
1 parent ab8c380 commit 3fe59e4
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 13 deletions.
3 changes: 2 additions & 1 deletion ldapcherry/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ def _init_backends(self, config):
except:
raise BackendModuleLoadingFail(module)
try:
self.backends[backend] = bc.Backend(params, cherrypy.log, backend)
attrslist = self.attributes.get_backend_attributes(backend)
self.backends[backend] = bc.Backend(params, cherrypy.log, backend, attrslist)
except MissingParameter as e:
raise e
except:
Expand Down
3 changes: 2 additions & 1 deletion ldapcherry/backend/backendLdap.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

class Backend(ldapcherry.backend.Backend):

def __init__(self, config, logger, name):
def __init__(self, config, logger, name, attrslist):
self.config = config
self._logger = logger
self.backend_name = name
Expand All @@ -25,6 +25,7 @@ def __init__(self, config, logger, name):
self.userdn = self.get_param('userdn')
self.groupdn = self.get_param('groupdn')
self.user_filter_tmpl = self.get_param('user_filter_tmpl')
self.attrlist = attrslist

def auth(self, username, password):

Expand Down
2 changes: 1 addition & 1 deletion ldapcherry/backend/backendSamba4.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@

class Backend(ldapcherry.backend.Backend):

def __init__(self, config, logger, name):
def __init__(self, config, logger, name, attrslist):
pass
21 changes: 11 additions & 10 deletions tests/test_BackendLdap.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,16 @@
}

cherrypy.log.error = syslog_error
attr = ['shell', 'cn', 'uid', 'uidNumber', 'gidNumber', 'home', 'userPassword', 'givenName', 'email', 'sn']

class TestError(object):

def testNominal(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
return True

def testConnect(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
ldap = inv._connect()
ldap.simple_bind_s(inv.binddn, inv.bindpassword)
return True
Expand All @@ -45,7 +46,7 @@ def testConnectSSL(self):
cfg2 = cfg.copy()
cfg2['uri'] = 'ldaps://ldap.ldapcherry.org:637'
cfg2['checkcert'] = 'on'
inv = Backend(cfg2, cherrypy.log, 'ldap')
inv = Backend(cfg2, cherrypy.log, 'ldap', attr)
ldap = inv._connect()
ldap.simple_bind_s(inv.binddn, inv.bindpassword)

Expand All @@ -54,7 +55,7 @@ def testConnectSSLWrongCA(self):
cfg2['uri'] = 'ldaps://ldap.ldapcherry.org:637'
cfg2['checkcert'] = 'on'
cfg2['ca'] = './cfg/wrong_ca.crt'
inv = Backend(cfg2, cherrypy.log, 'ldap')
inv = Backend(cfg2, cherrypy.log, 'ldap', attr)
ldapc = inv._connect()
try:
ldapc.simple_bind_s(inv.binddn, inv.bindpassword)
Expand All @@ -65,34 +66,34 @@ def testConnectSSLWrongCA(self):
# cfg2 = cfg.copy()
# cfg2['uri'] = 'ldaps://ldap.ldapcherry.org:637'
# cfg2['checkcert'] = 'off'
# inv = Backend(cfg2, cherrypy.log, 'ldap')
# inv = Backend(cfg2, cherrypy.log, 'ldap', attr)
# ldap = inv._connect()
# ldap.simple_bind_s(inv.binddn, inv.bindpassword)

def testAuthSuccess(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
return True

def testAuthSuccess(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
ret = inv.auth('jwatson', 'passwordwatson')
assert ret == True

def testAuthFailure(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
res = inv.auth('notauser', 'password') or inv.auth('jwatson', 'notapassword')
assert res == False

def testMissingParam(self):
cfg2 = {}
return True
try:
inv = Backend(cfg2, cherrypy.log, 'ldap')
inv = Backend(cfg2, cherrypy.log, 'ldap', attr)
except MissingKey:
return
else:
raise AssertionError("expected an exception")

def testGetUser(self):
inv = Backend(cfg, cherrypy.log, 'ldap')
inv = Backend(cfg, cherrypy.log, 'ldap', attr)
return True

0 comments on commit 3fe59e4

Please sign in to comment.