From 93ed190913d9753c9f93e0858a811dd7c9118aab Mon Sep 17 00:00:00 2001 From: kakwa Date: Thu, 21 May 2015 21:40:13 +0200 Subject: [PATCH] multiple changes * change parameters name for Backend Ldap * fix default value handling in backends get_param * correct exception in backends get_param * fix syntaxe error * add backend name in test_BackendLdap.py --- conf/ldapcherry.ini | 6 +++--- ldapcherry/__init__.py | 2 ++ ldapcherry/backend/__init__.py | 6 +++--- ldapcherry/backend/backendLdap.py | 14 +++++++------- tests/cfg/ldapcherry.ini | 4 +++- tests/test_BackendLdap.py | 29 ++++++++++++++++------------- 6 files changed, 34 insertions(+), 27 deletions(-) diff --git a/conf/ldapcherry.ini b/conf/ldapcherry.ini index a6294d2..7ec2ba2 100644 --- a/conf/ldapcherry.ini +++ b/conf/ldapcherry.ini @@ -69,14 +69,14 @@ roles.file = '/etc/ldapcherry/roles.yml' ldap.module = 'ldapcherry.backend.backendLdap' ldap.groupdn = 'ou=group,dc=example,dc=com' ldap.people = 'ou=group,dc=example,dc=com' -ldap.authdn = 'cn=ldapcherry,dc=example,dc=com' +ldap.binddn = 'cn=ldapcherry,dc=example,dc=com' ldap.password = 'password' ldap.uri = 'ldaps://ldap.ldapcherry.org' ldap.ca = '/etc/dnscherry/TEST-cacert.pem' ldap.starttls = 'on' ldap.checkcert = 'off' -ldap.user.filter.tmpl = '(uid=%(username)s)' -ldap.group.filter.tmpl = '(member=%(userdn)s)' +ldap.user_filter_tmpl = '(uid=%(username)s)' +ldap.group_filter_tmpl = '(member=%(userdn)s)' ad.module = 'ldapcherry.backend.backendSamba4' diff --git a/ldapcherry/__init__.py b/ldapcherry/__init__.py index dff12c0..2390c12 100644 --- a/ldapcherry/__init__.py +++ b/ldapcherry/__init__.py @@ -108,6 +108,8 @@ class LdapCherry(object): raise BackendModuleLoadingFail(module) try: self.backends[backend] = bc.Backend(params, cherrypy.log, backend) + except MissingParameter as e: + raise e except: raise BackendModuleInitFail(module) diff --git a/ldapcherry/backend/__init__.py b/ldapcherry/backend/__init__.py index e9b8887..e1d56ed 100644 --- a/ldapcherry/backend/__init__.py +++ b/ldapcherry/backend/__init__.py @@ -24,11 +24,11 @@ class Backend: def rm_from_group(self): pass - def get_param(self, param, default=False): + def get_param(self, param, default=None): if param in self.config: return self.config[param] - elif default: + elif not default is None: return default else: - raise MissingParameter(self.backend_name+'.'+param, 'backends') + raise MissingParameter('backends', self.backend_name+'.'+param) diff --git a/ldapcherry/backend/backendLdap.py b/ldapcherry/backend/backendLdap.py index 164da6c..9db3b75 100644 --- a/ldapcherry/backend/backendLdap.py +++ b/ldapcherry/backend/backendLdap.py @@ -16,12 +16,12 @@ class Backend(ldapcherry.backend.Backend): self.config = config self._logger = logger self.backend_name = name - self.binddn = self.get_param(binddn) - self.ca = self.get_param(ca) - self.checkcert = self.get_param(checkcert) - self.starttls = self.get_param(starttls) - self.uri = self.get_param(uri) - self.user_filter_tmpl = self.get_param(user_filter_tmpl) + self.binddn = self.get_param('binddn') + self.ca = self.get_param('ca', False) + self.checkcert = self.get_param('checkcert', 'on') + self.starttls = self.get_param('starttls', 'off') + self.uri = self.get_param('uri') + self.user_filter_tmpl = self.get_param('user_filter_tmpl') def auth(self, username, password): @@ -97,7 +97,7 @@ class Backend(ldapcherry.backend.Backend): else: ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_DEMAND) - if self.starttls == 'on': + if self.starttls == 'on': try: ldap_client.start_tls_s() except ldap.OPERATIONS_ERROR: diff --git a/tests/cfg/ldapcherry.ini b/tests/cfg/ldapcherry.ini index 3a3b1c4..e6a9d51 100644 --- a/tests/cfg/ldapcherry.ini +++ b/tests/cfg/ldapcherry.ini @@ -69,12 +69,14 @@ roles.file = './tests/cfg/roles.yml' ldap.module = 'ldapcherry.backend.backendLdap' ldap.groupdn = 'ou=group,dc=example,dc=com' ldap.people = 'ou=group,dc=example,dc=com' -ldap.authdn = 'cn=ldapcherry,dc=example,dc=com' +ldap.binddn = 'cn=ldapcherry,dc=example,dc=com' ldap.password = 'password' ldap.uri = 'ldaps://ldap.ldapcherry.org' ldap.ca = '/etc/dnscherry/TEST-cacert.pem' ldap.starttls = 'on' ldap.checkcert = 'off' +ldap.user_filter_tmpl = '(uid=%(username)s)' +ldap.group_filter_tmpl = '(member=%(userdn)s)' ad.module = 'ldapcherry.backend.backendSamba4' ad.auth = 'Administrator' diff --git a/tests/test_BackendLdap.py b/tests/test_BackendLdap.py index 3de7e5d..2ce2a8e 100644 --- a/tests/test_BackendLdap.py +++ b/tests/test_BackendLdap.py @@ -8,6 +8,7 @@ import pytest import sys from sets import Set from ldapcherry.backend.backendLdap import Backend +from ldapcherry import syslog_error from ldapcherry.exceptions import * import cherrypy @@ -15,57 +16,59 @@ cfg = { 'module' : 'ldapcherry.backend.ldap', 'groupdn' : 'ou=group,dc=example,dc=com', 'people' : 'ou=group,dc=example,dc=com', -'authdn' : 'cn=ldapcherry,dc=example,dc=com', +'binddn' : 'cn=ldapcherry,dc=example,dc=com', 'password' : 'password', 'uri' : 'ldaps://ldap.ldapcherry.org', 'ca' : '/etc/dnscherry/TEST-cacert.pem', -'starttls' : 'on', +'starttls' : 'off', 'checkcert' : 'off', -'user.filter.tmpl' : '(uid=%(username)s)', -'group.filter.tmpl' : '(member=%(userdn)s)', +'user_filter_tmpl' : '(uid=%(username)s)', +'group_filter_tmpl' : '(member=%(userdn)s)', } +cherrypy.log.error = syslog_error + class TestError(object): def testNominal(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testConnect(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') inv._connect() return True def testConnectSSL(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testConnectSSLNoCheck(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testAuthSuccess(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testAuthSuccess(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testAuthFailure(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True def testMissingParam(self): cfg2 = {} return True try: - inv = Backend(cfg2, cherrypy.log) + inv = Backend(cfg2, cherrypy.log, 'ldap') except MissingKey: return else: raise AssertionError("expected an exception") def testGetUser(self): - inv = Backend(cfg, cherrypy.log) + inv = Backend(cfg, cherrypy.log, 'ldap') return True