Clean user and group dictionaries
This commit is contained in:
parent
b46b4fa01e
commit
affcc47fe9
|
@ -48,7 +48,7 @@ def get_all_users(client):
|
||||||
return users
|
return users
|
||||||
|
|
||||||
|
|
||||||
def add_user(client, uid, cn, sn, mail):
|
def add_user(client, uid, cn, sn, mail, password):
|
||||||
dn = 'uid={},ou=Hackers,{}'.format(uid, client.base_dn)
|
dn = 'uid={},ou=Hackers,{}'.format(uid, client.base_dn)
|
||||||
|
|
||||||
attributes={
|
attributes={
|
||||||
|
@ -59,7 +59,8 @@ def add_user(client, uid, cn, sn, mail):
|
||||||
],
|
],
|
||||||
'cn': cn,
|
'cn': cn,
|
||||||
'sn': sn,
|
'sn': sn,
|
||||||
'mail': mail
|
'mail': mail,
|
||||||
|
'userPassword': password # TODO: use hashed password
|
||||||
}
|
}
|
||||||
|
|
||||||
add_entry(client, dn, attributes)
|
add_entry(client, dn, attributes)
|
||||||
|
|
|
@ -1,35 +1,41 @@
|
||||||
|
import re
|
||||||
from phi.logging import get_logger
|
from phi.logging import get_logger
|
||||||
|
|
||||||
log = get_logger(__name__)
|
log = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def flatten_attribute(attr):
|
|
||||||
if isinstance(attr, list) and len(attr)==1:
|
|
||||||
return attr[0]
|
|
||||||
else:
|
|
||||||
return attr
|
|
||||||
|
|
||||||
|
|
||||||
def flatten_entry(entry):
|
|
||||||
return {k: flatten_attribute(attr)
|
|
||||||
for k, attr in entry['attributes'].items()}
|
|
||||||
|
|
||||||
|
|
||||||
def make_user_dict(client, entry):
|
def make_user_dict(client, entry):
|
||||||
user = flatten_entry(entry)
|
attributes = entry['attributes']
|
||||||
dn = 'uid={},ou=Hackers,{}'.format(user['uid'], client.base_dn)
|
|
||||||
user['dn'] = dn
|
user = {}
|
||||||
|
user['uid'] = attributes['uid'][0]
|
||||||
|
user['dn'] = 'uid={},ou=Hackers,{}'.format(user['uid'], client.base_dn)
|
||||||
|
user['cn'] = attributes['cn'][0]
|
||||||
|
user['sn'] = attributes['sn'][0]
|
||||||
|
user['mail'] = attributes['mail'][0]
|
||||||
|
user['password'] = attributes['userPassword'][0]
|
||||||
|
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
def make_group_dict(client, entry):
|
def get_uid_from_dn(client, dn):
|
||||||
group = flatten_entry(entry)
|
uid = re.search('uid=(.+?),ou=Hackers,{}'.format(client.base_dn),
|
||||||
dn = 'cn={},ou=Groups,{}'.format(group['cn'], client.base_dn)
|
dn).group(1)
|
||||||
group['dn'] = dn
|
return uid
|
||||||
|
|
||||||
# unflatten members, they have to be a list even is there is a single one
|
|
||||||
group['member'] = entry['attributes']['member']
|
def make_group_dict(client, entry):
|
||||||
|
attributes = entry['attributes']
|
||||||
|
|
||||||
|
cn = attributes['cn'][0]
|
||||||
|
dn = 'cn={},ou=Groups,{}'.format(cn, client.base_dn)
|
||||||
|
members = [get_uid_from_dn(client, u_dn)
|
||||||
|
for u_dn in attributes['member']]
|
||||||
|
|
||||||
|
group = {}
|
||||||
|
group['dn'] = dn
|
||||||
|
group['cn'] = cn
|
||||||
|
group['members'] = members
|
||||||
|
|
||||||
return group
|
return group
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ def test_get_user_by_id(ldap_client):
|
||||||
assert user['mail'] == 'rmascetti@autistici.org'
|
assert user['mail'] == 'rmascetti@autistici.org'
|
||||||
|
|
||||||
|
|
||||||
def test_get_users_by_ou(ldap_client):
|
def test_get_all_users(ldap_client):
|
||||||
users = get_all_users(ldap_client)
|
users = get_all_users(ldap_client)
|
||||||
|
# print(users)
|
||||||
assert 'conte_mascetti' in [u['uid'] for u in users]
|
assert 'conte_mascetti' in [u['uid'] for u in users]
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,14 +26,16 @@ def test_add_delete_user(ldap_client):
|
||||||
cn = 'Rosa'
|
cn = 'Rosa'
|
||||||
sn = 'Rossi'
|
sn = 'Rossi'
|
||||||
mail = 'foo@autistici.org'
|
mail = 'foo@autistici.org'
|
||||||
|
password = 'changeme'
|
||||||
|
|
||||||
add_user(ldap_client, uid, cn, sn, mail)
|
add_user(ldap_client, uid, cn, sn, mail, password)
|
||||||
|
|
||||||
user = get_user_by_uid(ldap_client, uid)
|
user = get_user_by_uid(ldap_client, uid)
|
||||||
assert user['uid'] == uid
|
assert user['uid'] == uid
|
||||||
assert user['mail'] == mail
|
assert user['mail'] == mail
|
||||||
|
|
||||||
delete_user(ldap_client, user)
|
delete_user(ldap_client, user)
|
||||||
|
# print(user)
|
||||||
|
|
||||||
user = get_user_by_uid(ldap_client, uid)
|
user = get_user_by_uid(ldap_client, uid)
|
||||||
assert user is None
|
assert user is None
|
||||||
|
@ -43,7 +45,7 @@ def test_failing_add_user(ldap_client):
|
||||||
uid = 'conte_mascetti'
|
uid = 'conte_mascetti'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
add_user(ldap_client, uid, '.', '.', '.')
|
add_user(ldap_client, uid, 'name', 'surname', 'mail', 'pass')
|
||||||
except: # User alrady existing
|
except: # User alrady existing
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
@ -72,13 +74,13 @@ def test_add_to_group(ldap_client):
|
||||||
|
|
||||||
group_cn = 'WikiUsers'
|
group_cn = 'WikiUsers'
|
||||||
member_uid = 'rosa_rossi'
|
member_uid = 'rosa_rossi'
|
||||||
add_user(client, member_uid, '.', '.', '.')
|
add_user(client, member_uid, 'name', 'surname', 'mail', 'pass')
|
||||||
|
|
||||||
user = get_user_by_uid(client, member_uid)
|
user = get_user_by_uid(client, member_uid)
|
||||||
print(user)
|
# print(user)
|
||||||
|
|
||||||
group = get_group_by_cn(client, group_cn)
|
group = get_group_by_cn(client, group_cn)
|
||||||
group_members = group['member']
|
group_members = group['members']
|
||||||
|
|
||||||
assert len(group_members) == 1
|
assert len(group_members) == 1
|
||||||
# print(group_members)
|
# print(group_members)
|
||||||
|
@ -86,13 +88,10 @@ def test_add_to_group(ldap_client):
|
||||||
add_group_member(client, group, user)
|
add_group_member(client, group, user)
|
||||||
|
|
||||||
group = get_group_by_cn(client, group_cn)
|
group = get_group_by_cn(client, group_cn)
|
||||||
group_members = group['member']
|
group_members = group['members']
|
||||||
|
|
||||||
assert len(group_members) == 2
|
assert len(group_members) == 2
|
||||||
assert user['dn'] in group_members
|
assert user['uid'] in group_members
|
||||||
# print(group_members)
|
# print(group_members)
|
||||||
|
|
||||||
delete_user(client, user)
|
delete_user(client, user)
|
||||||
|
|
||||||
print(group)
|
|
||||||
# assert False
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user