[*] on a fait marcher et on teste la création de compte (reste les services)
This commit is contained in:
parent
27ed937c5f
commit
4178ad26ee
4 changed files with 32 additions and 20 deletions
|
@ -106,9 +106,11 @@ class Attr(object):
|
||||||
attr = self.__class__.__name__
|
attr = self.__class__.__name__
|
||||||
if attr in [ "mid", "uid", "cid", "fid", "aid"]: #... etc
|
if attr in [ "mid", "uid", "cid", "fid", "aid"]: #... etc
|
||||||
assert not self.conn.search('%s=%s' % (attr, str(self)))
|
assert not self.conn.search('%s=%s' % (attr, str(self)))
|
||||||
if attr in [ "mailAlias", "canonicalAlias"]:
|
if attr in [ "mailAlias", "canonicalAlias", 'mail', 'uid']:
|
||||||
assert not self.conn.search('|(mailAlias=%s)(canonicalAlias=%s)' % ((str(self),)*2))
|
res = self.conn.search('(|(mail=%s)(mailAlias=%s)(canonicalAlias=%s))' % ((str(self),)*3))
|
||||||
assert not mailexist(str(self))
|
if res:
|
||||||
|
raise ValueError("Mail déjà existant", [r.dn for r in res])
|
||||||
|
#assert not mailexist(str(self))
|
||||||
|
|
||||||
def _check_users_restrictions(self, values):
|
def _check_users_restrictions(self, values):
|
||||||
"""Vérifie les restrictions supplémentaires imposées selon les
|
"""Vérifie les restrictions supplémentaires imposées selon les
|
||||||
|
|
|
@ -50,22 +50,20 @@ def strip_accents(a):
|
||||||
|
|
||||||
def strip_spaces(a):
|
def strip_spaces(a):
|
||||||
""" Suppression des espaces et des apostrophes"""
|
""" Suppression des espaces et des apostrophes"""
|
||||||
res = a.copy()
|
return a.replace(u' ', u'_').replace(u"'", u'')
|
||||||
res.replace(u' ', u'_').replace(u"'", u'')
|
|
||||||
return res
|
|
||||||
|
|
||||||
def mailexist(mail):
|
def mailexist(mail):
|
||||||
"""Vérifie si une adresse mail existe ou non grace à la commande
|
"""Vérifie si une adresse mail existe ou non grace à la commande
|
||||||
vrfy du serveur mail """
|
vrfy du serveur mail """
|
||||||
|
|
||||||
mail = mail.split('@', 1)[0]
|
mail = mail.split('@', 1)[0]
|
||||||
try:
|
# try:
|
||||||
s = smtplib.SMTP(config.smtpserv)
|
s = smtplib.SMTP('smtp.adm.crans.org')
|
||||||
s.putcmd("vrfy", mail)
|
s.putcmd("vrfy", mail)
|
||||||
r = s.getreply()[0] in [250, 252]
|
r = s.getreply()[0] in [250, 252]
|
||||||
s.close()
|
s.close()
|
||||||
except:
|
# except:
|
||||||
raise ValueError(u'Serveur de mail injoignable')
|
# raise ValueError(u'Serveur de mail injoignable')
|
||||||
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
12
lc_ldap.py
12
lc_ldap.py
|
@ -287,8 +287,8 @@ class CransLdapObject(object):
|
||||||
|
|
||||||
self.attrs = ldif_to_uldif(self.attrs)
|
self.attrs = ldif_to_uldif(self.attrs)
|
||||||
if mode in ['w', 'rw']:
|
if mode in ['w', 'rw']:
|
||||||
|
self._modifs = copy.deepcopy(self.attrs)
|
||||||
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = False)
|
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = False)
|
||||||
|
|
||||||
### Vérification que `λv. str(Attr(v))` est bien une projection
|
### Vérification que `λv. str(Attr(v))` est bien une projection
|
||||||
oldif = res[0][1]
|
oldif = res[0][1]
|
||||||
nldif = cldif_to_ldif(self.attrs)
|
nldif = cldif_to_ldif(self.attrs)
|
||||||
|
@ -582,12 +582,12 @@ class adherent(proprio):
|
||||||
if u'posixAccount' in self.attrs['objectClass']:
|
if u'posixAccount' in self.attrs['objectClass']:
|
||||||
return self.attrs['uid'][0]
|
return self.attrs['uid'][0]
|
||||||
elif login:
|
elif login:
|
||||||
fn = crans_utils.strip_accents(self.attrs['prenom'][0].capitalize())
|
fn = crans_utils.strip_accents(unicode(self.attrs['prenom'][0]).capitalize())
|
||||||
ln = crans_utils.strip_accents(self.attrs['nom'][0].capitalize())
|
ln = crans_utils.strip_accents(unicode(self.attrs['nom'][0]).capitalize())
|
||||||
login = crans_utils.strip_accents(login).lower()
|
login = crans_utils.strip_accents(login).lower()
|
||||||
if jaro(ln.lower(), login) < 0.75 and jaro(fn.lower() + ' ' + ln.lower(), login) < 0.75:
|
if jaro(ln.lower(), login) < 0.75 and jaro(fn.lower() + ' ' + ln.lower(), login) < 0.75:
|
||||||
raise ValueError("Le login est trop différent du nom (%s -> %s)" %
|
raise ValueError("Le login est trop différent du nom",
|
||||||
(login, self.attrs['nom'][0]))
|
login, self.attrs['nom'][0])
|
||||||
if not re.match('^[a-z][-a-z]{1,15}$', login):
|
if not re.match('^[a-z][-a-z]{1,15}$', login):
|
||||||
raise ValueError("Le login a entre 2 et 16 lettres, il peut contenir (pas au début) des - ")
|
raise ValueError("Le login a entre 2 et 16 lettres, il peut contenir (pas au début) des - ")
|
||||||
if crans_utils.mailexist(login):
|
if crans_utils.mailexist(login):
|
||||||
|
@ -633,7 +633,7 @@ class adherent(proprio):
|
||||||
|
|
||||||
self._modifs['uidNumber'] = [unicode(uidNumber)]
|
self._modifs['uidNumber'] = [unicode(uidNumber)]
|
||||||
self._modifs['gidNumber'] = [unicode(config.gid)]
|
self._modifs['gidNumber'] = [unicode(config.gid)]
|
||||||
self._modifs['gecos'] = self._modifs['cn'][0] + u',,,'
|
self._modifs['gecos'] = [self._modifs['cn'][0] + u',,,']
|
||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class LDAPTest(unittest.TestCase):
|
||||||
|
|
||||||
class AdherentTest(LDAPTest):
|
class AdherentTest(LDAPTest):
|
||||||
"""Classe de test de la création d'un adhérent"""
|
"""Classe de test de la création d'un adhérent"""
|
||||||
tests = ["creationAdherent"]
|
tests = ["creationAdherent", "creationCompte"]
|
||||||
|
|
||||||
def creationAdherent(self):
|
def creationAdherent(self):
|
||||||
"""Crée un adhérent"""
|
"""Crée un adhérent"""
|
||||||
|
@ -57,6 +57,18 @@ class AdherentTest(LDAPTest):
|
||||||
'chbre': [u"G001"],
|
'chbre': [u"G001"],
|
||||||
'mail': [u"dave.null@toto.example"],
|
'mail': [u"dave.null@toto.example"],
|
||||||
})
|
})
|
||||||
|
self.ldap.delete_s(self.adherent.dn)
|
||||||
|
|
||||||
|
def creationCompte(self):
|
||||||
|
self.adherent = self.ldap.newAdherent({
|
||||||
|
'nom' : [u'McLellan'],
|
||||||
|
'prenom' : [u'Stue'],
|
||||||
|
'tel': [u'01 47 51 00 00'],
|
||||||
|
'chbre': [u"G001"],
|
||||||
|
'mail': [u'nobody@nowhere.example'],
|
||||||
|
})
|
||||||
|
self.adherent.compte(u'mclellan')
|
||||||
|
self.ldap.delete_s(self.adherent.dn)
|
||||||
|
|
||||||
|
|
||||||
def auto_suite(testcase):
|
def auto_suite(testcase):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue