diff --git a/app/api/etudiants.py b/app/api/etudiants.py index 3784e93833..ee1c2fbb69 100644 --- a/app/api/etudiants.py +++ b/app/api/etudiants.py @@ -284,7 +284,7 @@ def etudiant_bulletin_semestre( # XXX TODO Ajouter la possibilité de retourner nip: str = None, ine: str = None, version="long", - # pdf: bool = False, + pdf: bool = False, ): """ Retourne le bulletin d'un étudiant en fonction de son id et d'un semestre donné diff --git a/tests/api/test_api_etudiants.py b/tests/api/test_api_etudiants.py index c0f0470f3c..090a85451e 100644 --- a/tests/api/test_api_etudiants.py +++ b/tests/api/test_api_etudiants.py @@ -24,6 +24,11 @@ from tests.api.tools_test_api import verify_fields, verify_occurences_ids_etus from tests.api.tools_test_api import ETUD_FIELDS, FSEM_FIELDS +ETUDID = 1 +NIP = "1" +INE = "1" + + def test_etudiants_courant(api_headers): """ Route: /etudiants/courant @@ -31,7 +36,7 @@ def test_etudiants_courant(api_headers): fields = {"id", "nip", "nom", "prenom", "civilite"} r = requests.get( - API_URL + "/etudiants/courant", + API_URL + "/etudiants/courants", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -52,7 +57,7 @@ def test_etudiants_courant(api_headers): ########## Version long ################ r = requests.get( - API_URL + "/etudiants/courant/long", + API_URL + "/etudiants/courants/long", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -71,40 +76,115 @@ def test_etudiant(api_headers): ######### Test etudid ######### r = requests.get( - API_URL + "/etudiant/etudid/1", + API_URL + "/etudiant/etudid/" + str(ETUDID), headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 etud = r.json() - assert verify_fields(etud, ETUD_FIELDS) is True + code_nip = r.json()["code_nip"] + code_ine = r.json()["code_ine"] + ######### Test code nip ######### r = requests.get( - API_URL + "/etudiant/nip/1", + API_URL + "/etudiant/nip/" + code_nip, headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 - etud = r.json() + etud_nip = r.json() fields_ok = verify_fields(etud, ETUD_FIELDS) assert fields_ok is True ######### Test code ine ######### r = requests.get( - API_URL + "/etudiant/ine/1", + API_URL + "/etudiant/ine/" + code_ine, + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + etud_ine = r.json() + assert len(etud) == 26 + fields_ok = verify_fields(etud, ETUD_FIELDS) + assert fields_ok is True + + assert etud == etud_nip == etud_ine + + +def test_etudiants(api_headers): + """ + Route : /etudiants/etudid/, /etudiants/nip/, /etudiants/ine/ + """ + ######### Test etudid ######### + r = requests.get( + API_URL + "/etudiants/etudid/" + str(ETUDID), headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 etud = r.json() - assert len(etud) == 26 - fields_ok = verify_fields(etud, ETUD_FIELDS) + code_nip = etud[0]["code_nip"] + code_ine = etud[0]["code_ine"] + + assert isinstance(etud, list) + assert len(etud) == 1 + fields_ok = verify_fields(etud[0], ETUD_FIELDS) assert fields_ok is True + ######### Test code nip ######### + + r = requests.get( + API_URL + "/etudiants/nip/" + code_nip, + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + etud_nip = r.json() + + assert isinstance(etud_nip, list) + fields_ok = verify_fields(etud_nip[0], ETUD_FIELDS) + assert fields_ok is True + + all_unique = True + list_ids = [etud["id"] for etud in etud_nip] + for id in list_ids: + if list_ids.count(id) > 1: + all_unique = False + assert all_unique is True + + ######### Test code ine ######### + + r = requests.get( + API_URL + "/etudiants/ine/" + code_ine, + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + etud_ine = r.json() + + assert isinstance(etud_ine, list) + fields_ok = verify_fields(etud_ine[0], ETUD_FIELDS) + assert fields_ok is True + + all_unique = True + list_ids = [etud["id"] for etud in etud_ine] + for id in list_ids: + if list_ids.count(id) > 1: + all_unique = False + assert all_unique is True + + ####### Erreurs ####### + r = requests.get( + API_URL + "/etudiants/etudid/", + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 404 + def test_etudiant_formsemestres(api_headers): """ @@ -114,20 +194,52 @@ def test_etudiant_formsemestres(api_headers): ######### Test etudid ######### r = requests.get( - API_URL + "/etudiant/etudid/1/formsemestres", + API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 - formsemestres = r.json() - assert len(formsemestres) == 1 + list_formsemestres = r.json() + assert len(list_formsemestres) == 1 + formsemestre = list_formsemestres[0] + assert isinstance(formsemestre["id"], int) + assert isinstance(formsemestre["bul_bgcolor"], str) + assert isinstance(formsemestre["date_debut"], str) + assert isinstance(formsemestre["date_fin"], str) + assert isinstance(formsemestre["resp_can_edit"], bool) + assert isinstance(formsemestre["dept_id"], int) + assert isinstance(formsemestre["etat"], bool) + assert isinstance(formsemestre["resp_can_change_ens"], bool) + assert isinstance(formsemestre["modalite"], str) + assert isinstance(formsemestre["ens_can_edit_eval"], bool) + assert isinstance(formsemestre["formation_id"], int) + assert isinstance(formsemestre["gestion_compensation"], bool) + assert formsemestre["elt_sem_apo"] is None or isinstance( + formsemestre["elt_sem_apo"], str + ) + assert isinstance(formsemestre["semestre_id"], int) + assert isinstance(formsemestre["bul_hide_xml"], bool) + assert formsemestre["elt_annee_apo"] is None or isinstance( + formsemestre["elt_annee_apo"], str + ) + assert isinstance(formsemestre["titre"], str) + assert isinstance(formsemestre["block_moyennes"], bool) + assert formsemestre["scodoc7_id"] is None or isinstance( + formsemestre["scodoc7_id"], int + ) + assert isinstance(formsemestre["gestion_semestrielle"], bool) + assert isinstance(formsemestre["formsemestre_id"], int) + assert isinstance(formsemestre["titre_num"], str) + assert isinstance(formsemestre["date_debut_iso"], str) + assert isinstance(formsemestre["date_fin_iso"], str) + assert isinstance(formsemestre["responsables"], list) + assert isinstance(formsemestre["titre_formation"], str) - formsemestre = formsemestres[0] assert verify_fields(formsemestre, FSEM_FIELDS) is True ######### Test code nip ######### r = requests.get( - API_URL + "/etudiant/nip/1/formsemestres", + API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -140,7 +252,7 @@ def test_etudiant_formsemestres(api_headers): ######### Test code ine ######### r = requests.get( - API_URL + "/etudiant/ine/1/formsemestres", + API_URL + "/etudiant/ine/" + str(INE) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -156,10 +268,12 @@ def test_etudiant_bulletin_semestre(api_headers): """ Route: /etudiant/etudid//formsemestre//bulletin """ + ##################### LONG ######################## + ######### Test etudid ######### r = requests.get( - API_URL + "/etudiant/etudid/1/formsemestre/1/bulletin", + API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestre/1/bulletin", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -170,7 +284,7 @@ def test_etudiant_bulletin_semestre(api_headers): ######### Test code nip ######### r = requests.get( - API_URL + "/etudiant/nip/1/formsemestre/1/bulletin", + API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/bulletin", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -180,7 +294,7 @@ def test_etudiant_bulletin_semestre(api_headers): ######### Test code ine ######### r = requests.get( - API_URL + "/etudiant/ine/1/formsemestre/1/bulletin", + API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/bulletin", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -188,6 +302,94 @@ def test_etudiant_bulletin_semestre(api_headers): bul = r.json() assert len(bul) == 13 # HARDCODED + ################### LONG + PDF ##################### + + # ######### Test etudid ######### + # + # r = requests.get( + # API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestre/1/bulletin/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + # + # ######### Test code nip ######### + # + # r = requests.get( + # API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/bulletin/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + # + # ######### Test code ine ######### + # r = requests.get( + # API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/bulletin/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + + ################### SHORT ##################### + + ######### Test etudid ######### + r = requests.get( + API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestre/1/bulletin/short", + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + bul = r.json() + assert len(bul) == 13 # HARDCODED + + ######### Test code nip ######### + + r = requests.get( + API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/bulletin/short", + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + bul = r.json() + assert len(bul) == 13 # HARDCODED + + ######### Test code ine ######### + r = requests.get( + API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/bulletin/short", + headers=api_headers, + verify=CHECK_CERTIFICATE, + ) + assert r.status_code == 200 + bul = r.json() + assert len(bul) == 13 # HARDCODED + + ################### SHORT + PDF ##################### + + # ######### Test etudid ######### + # r = requests.get( + # API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestre/1/bulletin/short/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + # + # ######### Test code nip ######### + # + # r = requests.get( + # API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/bulletin/short/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + # + # ######### Test code ine ######### + # r = requests.get( + # API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/bulletin/short/pdf", + # headers=api_headers, + # verify=CHECK_CERTIFICATE, + # ) + # assert r.status_code == 200 + ### --- Test étudiant inexistant r = requests.get( API_URL + "/etudiant/ine/189919919119191/formsemestre/1/bulletin", @@ -230,7 +432,7 @@ def test_etudiant_groups(api_headers): ######### Test code nip ######### r = requests.get( - API_URL + "/etudiant/nip/1/formsemestre/1/groups", + API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/groups", headers=api_headers, verify=CHECK_CERTIFICATE, ) @@ -243,7 +445,7 @@ def test_etudiant_groups(api_headers): ######### Test code ine ######### r = requests.get( - API_URL + "/etudiant/ine/1/formsemestre/1/groups", + API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/groups", headers=api_headers, verify=CHECK_CERTIFICATE, )