Skip to content

Commit e040b5c

Browse files
committed
tests
1 parent bc46fb3 commit e040b5c

7 files changed

Lines changed: 120 additions & 28 deletions

File tree

‎src/bin/groups.py‎

100644100755
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,23 @@
11
#!/usr/bin/python3
22
import sys
3+
import json
34
sys.path.append('../lib')
45
import backend_ldap_utils as ldap
56
import backend_utils as u
67

7-
def is_group_concerned(js):
8-
if u.config('groupFamily', '') == '':
9-
return True
10-
families = [f.strip() for f in u.config('groupFamily').split(',')]
11-
return js['payload']['group'].get('family', '') in families
128

139
def main():
1410
js = u.readjsoninput()
1511
config=u.read_config('../etc/config.conf')
16-
if not is_group_concerned(js):
17-
print(u.returncode(0, "not concerned"))
18-
exit(0)
1912
ldap.set_config(config)
2013
conn=ldap.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
21-
if (ldap.do_group(conn,js)):
22-
print(u.returncode(0, "done"))
14+
ret=ldap.do_group(conn,js)
15+
result=json.loads(ret)
16+
if (result['status'] == 0):
17+
print(ret)
2318
exit(0)
2419
else:
25-
print(u.returncode(1, "not ok"))
20+
print(ret)
2621
exit(1)
2722

2823
if __name__ == '__main__':

‎src/bin/groups_del.py‎

100644100755
File mode changed.

‎src/lib/backend_ldap_utils.py‎

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,12 @@ def lifecycle(entity):
332332
lifecycle.do(entity)
333333

334334
return(r)
335+
def is_group_concerned(js):
336+
if u.config('groupFamily', '') == '':
337+
return True
338+
families = [f.strip() for f in u.config('groupFamily').split(',')]
339+
return js['payload']['group'].get('family', '') in families
340+
335341

336342
def add_group(l,entity):
337343
members=entity['payload']['members']
@@ -359,42 +365,46 @@ def add_group(l,entity):
359365
ldif=modlist.addModlist(convert_to_utf8(object))
360366
try:
361367
l.add_s(dn,ldif)
362-
return True
368+
return (u.returncode(0, 'group added or modified'))
363369
except ldap.LDAPError as e:
364-
print(u.returncode(1, format_ldap_error(e)))
365-
exit(1)
370+
return (u.returncode(1, format_ldap_error(e)))
371+
366372

367-
def del_group(l,group_entry):
373+
def del_group(l,entity):
374+
if not is_group_concerned(entity):
375+
return u.returncode(0, 'not concerned')
368376
base = u.config('base')
369377
name = entity['payload']['group']['cn']
370378
r = l.search_s(base, ldap.SCOPE_SUBTREE, '(cn=' + name + ')')
371379
if len(r) > 0:
372380
try:
373-
l.delete_s(group_entry[0][0])
374-
print(u.returncode(0, 'deleted'))
381+
l.delete_s(r[0][0])
382+
return u.returncode(0, 'deleted')
375383
except ldap.LDAPError as e:
376-
print(u.returncode(1, format_ldap_error(e)))
377-
exit(1)
384+
return u.returncode(1, format_ldap_error(e))
385+
else:
386+
return (u.returncode(1, 'Group not found'))
378387

379388
def mod_group(l,entity,group_entry):
380389
try:
381390
l.delete_s(group_entry[0][0])
382391
except ldap.LDAPError as e:
383-
print(u.returncode(1, format_ldap_error(e)))
384-
exit(1)
385-
add_group(l,entity)
386-
return True
392+
return u.returncode(1, format_ldap_error(e))
393+
return add_group(l,entity)
387394

388395
def do_group(l,entity):
396+
#concerned ?
397+
if not is_group_concerned(entity):
398+
return u.returncode(0, 'not concerned')
389399
#group exist ?
390400
base = u.config('base')
391401
name=entity['payload']['group']['cn']
392402
r = l.search_s(base, ldap.SCOPE_SUBTREE, '(cn='+name+')')
393403
if len(r) > 0:
394-
mod_group(l,entity,r)
395-
return True
404+
x=mod_group(l,entity,r)
405+
return x
396406
else:
397-
add_group(l,entity)
398-
return True
407+
x=add_group(l,entity)
408+
return x
399409

400410

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
host=ldap://127.0.0.1
2+
dn=cn=admin,dc=test,dc=local
3+
password=XXXXXX
4+
base=dc=test,dc=local
5+
userbase=dc=test,dc=local
6+
rdnattribute=uid
7+
branchForEtd=ou=etd
8+
branchForEsn=ou=esn
9+
branchForAdm=ou=adm
10+
branchForAss=ou=association
11+
branchForFon=ou=bfonctionnelle
12+
backendFor=etd,adm,esn,ass
13+
branchAttr=departmentNumber
14+
disabledAttribute=sogxdisableflag
15+
disableValue=1
16+
enableValue=0
17+
additionnalObjectClass=sogxUser
18+
groupFamily=XXXXXX,YYYYYY

‎unittest/ldapBinTest.py‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,15 @@ def test_20eduperson(self):
133133
def test_21lifecycle(self):
134134
ret =self.run_backend('lifecycle.py', './files_ad_utils/lifecycle.json')
135135
result = json.loads(ret["stdout"])
136-
136+
self.assertEqual(result["status"], 0)
137137
def test_22creategroup(self):
138138
ret = self.run_backend('groups.py', './files_ad_utils/group.json')
139+
result = json.loads(ret["stdout"])
140+
self.assertEqual(result["status"], 0)
141+
def test_23deletegroup(self):
142+
ret = self.run_backend('groups_del.py', './files_ad_utils/group.json')
143+
result = json.loads(ret["stdout"])
144+
self.assertEqual(result["status"], 0)
139145

140146
if __name__ == '__main__':
141147
unittest.main()

‎unittest/ldapUtilsTest.py‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,63 @@ def test27_add_group(self):
218218
x = ldap.upsert_entry(l, entity)
219219
result = json.loads(x)
220220
self.assertEqual(result['status'], 0)
221+
# creation du groupe dans parametre branchForGroup ni groupFamily
222+
entity = u.readjsonfile("./files_ad_utils/group.json")
223+
x=ldap.do_group(l, entity)
224+
result = json.loads(x)
225+
self.assertEqual(result['status'], 0)
226+
227+
def test28_delete_group(self):
228+
config = u.read_config('./files_backend_utils/config1.conf')
229+
ldap.set_config(config)
230+
data = u.get_config()
231+
l = ldap.connect_ldap(data['host'], data['dn'], data['password'])
232+
entity = u.readjsonfile("./files_ad_utils/group.json")
233+
x=ldap.del_group(l, entity)
234+
result = json.loads(x)
235+
self.assertEqual(result['status'], 0)
221236

237+
def test29_delete_group_not_exists(self):
238+
config = u.read_config('./files_backend_utils/config1.conf')
239+
ldap.set_config(config)
240+
data = u.get_config()
241+
l = ldap.connect_ldap(data['host'], data['dn'], data['password'])
242+
entity = u.readjsonfile("./files_ad_utils/group.json")
243+
x=ldap.del_group(l, entity)
244+
result = json.loads(x)
245+
self.assertEqual(result['status'], 1)
246+
def test30_group_not_concerned(self):
247+
config = u.read_config('./files_backend_utils/config3.conf')
248+
ldap.set_config(config)
249+
data = u.get_config()
250+
l = ldap.connect_ldap(data['host'], data['dn'], data['password'])
251+
entity = u.readjsonfile("./files_ad_utils/group.json")
252+
x = ldap.do_group(l, entity)
253+
result = json.loads(x)
254+
self.assertEqual(result['status'], 0)
255+
self.assertEqual(result['message'], "not concerned")
256+
257+
def test31_group_del_not_concerned(self):
258+
config = u.read_config('./files_backend_utils/config3.conf')
259+
ldap.set_config(config)
260+
data = u.get_config()
261+
l = ldap.connect_ldap(data['host'], data['dn'], data['password'])
262+
entity = u.readjsonfile("./files_ad_utils/group.json")
263+
x = ldap.del_group(l, entity)
264+
result = json.loads(x)
265+
self.assertEqual(result['status'], 0)
266+
self.assertEqual(result['message'], "not concerned")
267+
268+
def test32_group_u_in_family(self):
269+
config = u.read_config('./files_backend_utils/config3.conf')
270+
ldap.set_config(config)
271+
data = u.get_config()
272+
l = ldap.connect_ldap(data['host'], data['dn'], data['password'])
273+
entity = u.readjsonfile("./files_ad_utils/group.json")
274+
entity['payload']['group']['family'] = 'XXXXXX'
275+
x = ldap.do_group(l, entity)
276+
result = json.loads(x)
277+
self.assertEqual(result['status'], 0)
222278
if __name__ == '__main__':
223279
unittest.main()
280+

‎unittest/openldap_testserver/custom/99base.ldif‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,9 @@ changeType: add
3333
ou: bconctionnelle
3434
objectClass: organizationalUnit
3535
objectClass: top
36+
37+
dn: ou=groupes,dc=test,dc=local
38+
changeType: add
39+
ou: groupes
40+
objectClass: organizationalUnit
41+
objectClass: top

0 commit comments

Comments
 (0)