Skip to content

Commit aba94e2

Browse files
committed
tests unitaires
1 parent 7e3cb9c commit aba94e2

File tree

7 files changed

+154
-3
lines changed

7 files changed

+154
-3
lines changed

src/bin/ping.py

100644100755
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
sys.path.append('../lib')
44
import ad_utils as ad
55
import backend_utils as u
6+
import argparse
67

7-
config=u.read_config('../etc/config.conf')
8+
parser = argparse.ArgumentParser()
9+
parser.add_argument('--config', help='config file', default="../etc/config.conf")
10+
args = parser.parse_args()
11+
config=u.read_config(args.config)
812
ad.set_config(config)
913
## test connection
1014
exitCode=ad.test_conn()

src/ps1_templates/changepassword.template

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ if ( ! $userFound ){
2020
exit 1
2121
}
2222
if (Test-ADAuthentication -username $user -password $oldp){
23-
Write-Host "password ok"
2423
try{
2524
Set-ADUser -Identity $user -CannotChangePassword $false
2625
# on lance 2 fois la commande car ne marche pas la premiere fois bug 2019 ?

unittest/README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,19 @@ Génération d'une clé privée :
2929
```
3030
ssh-keygen -t ed25519 -f ./files_ad_utils/id_ed25519 -N ''
3131
32-
```
32+
```
33+
34+
## Les differents tests
35+
36+
### backendUtilsTest.py
37+
teste les methodes de la librairie src/lib/backend_utlis.py
38+
39+
A besoin des fichiers du repertoire ./files_backend_utils et de ses fichiers
40+
41+
### adUtilsTest.py
42+
Teste les methodes et les templates de la librairie src/lib/ad_utils.py
43+
44+
A besoin du repertoire files_ad_utils et de ses fichiers
45+
46+
## adBinTest.py
47+
teste les scripts du repertoire src/bin en configuration reelle (fichier de cong etc/config.conf)

unittest/adBinTest.py

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
import unittest
2+
import subprocess
3+
import os
4+
import json
5+
__PYTHONENV__='/../.venv/bin/python'
6+
class adBinTest (unittest.TestCase):
7+
def run_backend(self,script, file= "",args=""):
8+
dir = os.getcwd()
9+
exe=dir + __PYTHONENV__
10+
execargs=[]
11+
execargs.append(exe)
12+
execargs.append(script)
13+
if args :
14+
execargs.append(args)
15+
if file == '':
16+
os.chdir('../src/bin')
17+
ret = subprocess.run(execargs,capture_output=True)
18+
else:
19+
#open file to pass to stdin
20+
fic = open(file, "r")
21+
content = fic.read()
22+
fic.close()
23+
os.chdir('../src/bin')
24+
ret = subprocess.run(execargs,input=content.encode(),capture_output=True)
25+
os.chdir(dir)
26+
return { "returncode" : ret.returncode,"stdout" : ret.stdout.decode()}
27+
28+
def test_01ping(self):
29+
ret = self.run_backend('ping.py','')
30+
self.assertEqual(ret['returncode'],0)
31+
result=json.loads(ret["stdout"])
32+
self.assertEqual(result["status"], 0)
33+
self.assertEqual(result["message"], "I m alive")
34+
35+
def test_02upsertidentity(self):
36+
ret = self.run_backend('upsertidentity.py','./files_ad_utils/identity1.json')
37+
self.assertEqual(ret['returncode'], 0)
38+
39+
def test_03delentity(self):
40+
ret = self.run_backend('delentity.py', './files_ad_utils/identity1.json')
41+
self.assertEqual(ret['returncode'], 0)
42+
result = json.loads(ret["stdout"])
43+
self.assertEqual(result["status"], 0)
44+
self.assertEqual(result["message"], "user deleted")
45+
46+
def test_04upsertidentity_add(self):
47+
ret = self.run_backend('upsertidentity.py', './files_ad_utils/identity1.json')
48+
self.assertEqual(ret['returncode'], 0)
49+
result = json.loads(ret["stdout"])
50+
self.assertEqual(result["status"], 0)
51+
self.assertEqual(result["message"], "Identity created")
52+
53+
def test_04upsertidentity_mod(self):
54+
ret = self.run_backend('upsertidentity.py', './files_ad_utils/identity1.json')
55+
self.assertEqual(ret['returncode'], 0)
56+
result = json.loads(ret["stdout"])
57+
self.assertEqual(result["status"], 0)
58+
self.assertEqual(result["message"], "Identity modified")
59+
60+
def test_05init_password(self):
61+
ret = self.run_backend('resetpwd.py', './files_ad_utils/resetpassword.json')
62+
self.assertEqual(ret['returncode'], 0)
63+
result = json.loads(ret["stdout"])
64+
self.assertEqual(result["status"], 0)
65+
self.assertEqual(result["message"], "password reseted")
66+
def test_06change_password(self):
67+
ret = self.run_backend('changepwd.py', './files_ad_utils/changepassword_true.json')
68+
self.assertEqual(ret['returncode'], 0)
69+
result = json.loads(ret["stdout"])
70+
self.assertEqual(result["status"], 0)
71+
self.assertEqual(result["message"], "Password changed")
72+
73+
def test_07change_bad_password(self):
74+
ret = self.run_backend('changepwd.py', './files_ad_utils/changepassword_true.json')
75+
self.assertEqual(ret['returncode'], 1)
76+
result = json.loads(ret["stdout"])
77+
self.assertEqual(result["status"], 1)
78+
self.assertEqual(result["message"], "Authentication Invalid password")
79+
80+
def test_08desactivate(self):
81+
ret = self.run_backend('activation.py', './files_ad_utils/identity1.json',"--active=1")
82+
self.assertEqual(ret['returncode'], 0)
83+
result = json.loads(ret["stdout"])
84+
self.assertEqual(result["status"], 0)
85+
self.assertEqual(result["message"], "user Enabled")
86+
87+
def test_09activate(self):
88+
ret = self.run_backend('activation.py', './files_ad_utils/identity1.json',"--active=0")
89+
self.assertEqual(ret['returncode'], 0)
90+
result = json.loads(ret["stdout"])
91+
self.assertEqual(result["status"], 0)
92+
self.assertEqual(result["message"], "user Disabled")
93+
94+
def test_10upsertidentify_notconcerned(self):
95+
ret = self.run_backend('upsertidentity.py', './files_ad_utils/identity_notconcerned.json')
96+
self.assertEqual(ret['returncode'], 0)
97+
result = json.loads(ret["stdout"])
98+
self.assertEqual(result["status"], 0)
99+
self.assertEqual(result["message"], "not concerned")
100+
101+
def test_11delentity_notconcerned(self):
102+
ret = self.run_backend('delentity.py', './files_ad_utils/identity_notconcerned.json')
103+
self.assertEqual(ret['returncode'], 0)
104+
result = json.loads(ret["stdout"])
105+
self.assertEqual(result["status"], 0)
106+
self.assertEqual(result["message"], "not concerned")
107+
108+
def test_12init_password_notconcerned(self):
109+
ret = self.run_backend('resetpwd.py', './files_ad_utils/resetpassword_notconcerned.json')
110+
self.assertEqual(ret['returncode'], 0)
111+
result = json.loads(ret["stdout"])
112+
self.assertEqual(result["status"], 0)
113+
self.assertEqual(result["message"], "not concerned")
114+
115+
def test_13change_password_notconcerned(self):
116+
ret = self.run_backend('changepwd.py', './files_ad_utils/changepassword_true_notconcerned.json')
117+
self.assertEqual(ret['returncode'], 0)
118+
result = json.loads(ret["stdout"])
119+
self.assertEqual(result["status"], 0)
120+
self.assertEqual(result["message"], "not concerned")
121+
122+
def test_14desactivate_notconcerned(self):
123+
ret = self.run_backend('activation.py', './files_ad_utils/identity_notconcerned.json',"--active=1")
124+
self.assertEqual(ret['returncode'], 0)
125+
result = json.loads(ret["stdout"])
126+
self.assertEqual(result["status"], 0)
127+
self.assertEqual(result["message"], "not concerned")
128+
129+
if __name__ == '__main__':
130+
unittest.main()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"concernedTo":"673caf105bb040153c074f2d","payload":{"uid":"omaton","oldPassword":"Abbert1xIEIIE88!","newPassword":"AbCx34IddWZE1!","_id":"673caf105bb040153c074f2d","inetOrgPerson":{"cn":"Maton Olivier","displayName":"Olivier Maton","facsimileTelephoneNumber":"","givenName":"Olivier","labeledURI":"","mail":"xx@xx.fr","mobile":"","postalAddress":"","preferredLanguage":"","sn":"Maton","telephoneNumber":"","title":"","uid":"omaton","employeeNumber":["184944"],"employeeType":"TAIGA","departmentNumber":["div"],"jpegPhoto":"","userCertificate":""},"additionalFields":{"objectClasses":["supannPerson"],"attributes":{"supannPerson":{"supannAutreMail":"contact@latx.com","supannEmpId":184944,"supannEntiteAffectationPrincipale":"div","supannEtablissement":"{UAI}A123456","supannNomdeNaissance":"","supannOIDCDatedeNaissance":"01/01/1970","supannOIDCGenre":"M.","supannPrenomsEtatCivil":"Olivier","supannRefId":["{TAIGA}184944"],"supannTypeEntiteAffectation":["adm"],"supanncivilite":"M.","supannCodeINSEEPaysDeNaissance":"","supannCodeINSEEVilleDeNaissance":"","supannListeRouge":"","mailForwardingAddress":"","supannMailPerso":"","supannRoleGenerique":"","supannParrainDN":"","supannActivite":"","supannEmpDateFin":"","supannEtuAnneeInscription":"","supannEntiteAffectation":[],"supannEtUid":"","supannEtuCursusAnnee":"","supannEtuDiplome":"","supannCodeIne":""}}},"dataStatus":1,"deletedFlag":false,"initState":0,"lastBackendSync":"2025-01-21T12:17:55.427Z","lastSync":"2024-11-19T15:34:14.599Z","lifecycle":-1,"metadata":{"createdBy":"taiga","createdAt":"2024-11-19T15:30:24.431Z","lastUpdatedBy":"admin","lastUpdatedAt":"2025-01-21T12:17:52.740Z"},"primaryEmployeeNumber":"","srcFusionId":"","state":99,"fingerprint":"30e1fb7f3ce51202908e6c2b065786ed6d904038e40f302b8c31cc97b1b081eb"},"options":{"async":false,"timeoutDiscard":true,"disableLogs":true,"switchToProcessing":false,"updateStatus":false}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"concernedTo":"673df967f8edfbb98437994f","payload":{"identity":{"action":"IDENTITY_UPDATE","identity":{"_id":"673df967f8edfbb98437994f","inetOrgPerson":{"cn":"Maton Olivier","displayName":"Olivier Maton","facsimileTelephoneNumber":"","givenName":"Olivier","labeledURI":"","mail":"olivier.maton@exemple.fr","mobile":"06 05 04 03 02","postalAddress":"15 rue des pingouins, 54000, Nancy","preferredLanguage":"","sn":"Maton","telephoneNumber":"","title":"","uid":"omaton","employeeNumber":"179892","employeeType":"TAIGA","departmentNumber":["div"],"jpegPhoto":"","userCertificate":""},"additionalFields":{"objectClasses":["supannPerson","eduPerson","sogxuser","ealPerson"],"attributes":{"eduPerson":{"edupersonaffiliation":["staff","member"],"edupersonprimaryaffiliation":"staff","edupersonprincipalname":"omaton@exemple.com"},"sogxuser":{"proxyaddress":["administrator@exemple.conf"],"sogxquota":0,"sogxdisableflag":0},"supannPerson":{"supannAutreMail":"olivier.maton@gmoil.com","supannEmpId":"175","supannEtablissement":"{UAI}0690184A","supannOIDCDatedeNaissance":"01/01/1970","supannOIDCGenre":"M.","supannPrenomsEtatCivil":"Olivier","supannRefId":["179892","175"],"supannTypeEntiteAffectation":["div"],"supanncivilite":"M.","supannEntiteAffectationPrincipale":"div","supannNomdeNaissance":"","supannCodeINSEEPaysDeNaissance":"","supannCodeINSEEVilleDeNaissance":"","supannListeRouge":"","mailForwardingAddress":"","supannMailPerso":"","supannRoleGenerique":"","supannEtuId":"","supannParrainDN":"","supannActivite":"","supannEmpDateFin":"","supannEtuDiplome":"","supannEtuAnneeInscription":""},"ealPerson":{"ealnumcarte":"043d6232346f80","ealmail2":"","ealmobile2":"","ealformation":"","ealsituation":"","ealcycle":"","ealan":"","ealdepartement":"","ealwifi":"","ealnumetd":"","ealenseignement":[],"ealue":[]}}},"customFields":{"photo":"adm-175.jpg"},"dataStatus":1,"deletedFlag":false,"initInfo":{"sentDate":"","initDate":"2025-01-29T10:47:15.870Z"},"initState":1,"lastBackendSync":"","lastSync":"2025-01-29T08:27:38.932Z","lifecycle":-1,"metadata":{"createdAt":"2024-11-20T14:59:51.924Z","createdBy":"Taiga","lastUpdatedAt":"2025-01-30T16:59:24.708Z","lastUpdatedBy":"admin"},"primaryEmployeeNumber":"","srcFusionId":"","state":2,"fingerprint":"b46334b0f30216223ac51cb2e87bea7e5d843bba2a529142d6b72ff731e52623"}}},"options":{"async":false,"updateStatus":true,"task":"679bafef3b8386f9c7f360a3"}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"concernedTo":"673caf105bb040153c074f2d","payload":{"uid":"omaton","newPassword":"Abbert1xIEIIE88!","_id":"673caf105bb040153c074f2d","inetOrgPerson":{"cn":"Maton Olivier","displayName":"Olivier Maton","facsimileTelephoneNumber":"","givenName":"Olivier","labeledURI":"","mail":"olivier.maton@exemple.fr","mobile":"06 01 02 03 04","postalAddress":"","preferredLanguage":"","sn":"Maton","telephoneNumber":"","title":"","uid":"omaton","employeeNumber":["179892"],"employeeType":"TAIGA","departmentNumber":["div"],"jpegPhoto":"","userCertificate":""},"additionalFields":{"objectClasses":["supannPerson"],"attributes":{"supannPerson":{"supannAutreMail":"contact@xx.com","supannEmpId":179892,"supannEntiteAffectationPrincipale":"div","supannEtablissement":"{UAI}A123456","supannNomdeNaissance":"","supannOIDCDatedeNaissance":"01/01/1970","supannOIDCGenre":"M.","supannPrenomsEtatCivil":"Olivier","supannRefId":["{TAIGA}179892"],"supannTypeEntiteAffectation":["div"],"supanncivilite":"M.","supannCodeINSEEPaysDeNaissance":"","supannCodeINSEEVilleDeNaissance":"","supannListeRouge":"","mailForwardingAddress":"","supannMailPerso":"","supannRoleGenerique":"","supannParrainDN":"","supannActivite":"","supannEmpDateFin":"","supannEtuAnneeInscription":"","supannEntiteAffectation":[],"supannEtUid":"","supannEtuCursusAnnee":"","supannEtuDiplome":"","supannCodeIne":""}}},"dataStatus":1,"deletedFlag":false,"initState":0,"lastBackendSync":"2025-01-25T16:02:03.849Z","lastSync":"2024-11-19T15:34:14.599Z","lifecycle":-1,"metadata":{"createdBy":"taiga","createdAt":"2024-11-19T15:30:24.431Z","lastUpdatedBy":"admin","lastUpdatedAt":"2025-01-25T16:02:01.635Z"},"primaryEmployeeNumber":"","srcFusionId":"","state":99,"fingerprint":"920a2f95953927eacfdd8f2f5a5a6e274e77568b7091947e57b9fa8441c53a20"},"options":{"async":false,"timeoutDiscard":true,"disableLogs":false,"switchToProcessing":false,"updateStatus":false}}

0 commit comments

Comments
 (0)