# -*- coding: utf-8 -*- """Test Logos Utilisation : créer les variables d'environnement: (indiquer les valeurs pour le serveur ScoDoc que vous voulez interroger) export SCODOC_URL="https://scodoc.xxx.net/" export SCODOC_USER="xxx" export SCODOC_PASSWD="xxx" export CHECK_CERTIFICATE=0 # ou 1 si serveur de production avec certif SSL valide (on peut aussi placer ces valeurs dans un fichier .env du répertoire tests/api). Lancer : pytest tests/api/test_api_etudiants.py """ import requests from tests.api.setup_test_api import API_URL, CHECK_CERTIFICATE, api_headers 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 """ fields = {"id", "nip", "nom", "prenom", "civilite"} r = requests.get( API_URL + "/etudiants/courants", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 etudiants = r.json() assert len(etudiants) > 0 etud = etudiants[-1] assert verify_fields(etud, fields) is True assert isinstance(etud["id"], int) assert isinstance(etud["nip"], str) assert isinstance(etud["nom"], str) assert isinstance(etud["prenom"], str) assert isinstance(etud["civilite"], str) all_unique = verify_occurences_ids_etus(r.text) assert all_unique is True ########## Version long ################ r = requests.get( API_URL + "/etudiants/courants/long", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 etudiants = r.json() assert len(etudiants) == 16 # HARDCODED etud = etudiants[-1] assert verify_fields(etud, ETUD_FIELDS) is True def test_etudiant(api_headers): """ Routes : /etudiant/etudid/, /etudiant/nip/, /etudiant/ine/ """ ######### Test etudid ######### r = requests.get( 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/" + code_nip, headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 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/" + 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() 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): """ Route: /etudiant/etudid//formsemestres """ ######### Test etudid ######### r = requests.get( API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 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) assert verify_fields(formsemestre, FSEM_FIELDS) is True ######### Test code nip ######### r = requests.get( API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 formsemestres = r.json() assert len(formsemestres) == 1 formsemestre = formsemestres[0] assert verify_fields(formsemestre, FSEM_FIELDS) is True ######### Test code ine ######### r = requests.get( API_URL + "/etudiant/ine/" + str(INE) + "/formsemestres", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 formsemestres = r.json() assert len(formsemestres) == 1 formsemestre = formsemestres[0] assert verify_fields(formsemestre, FSEM_FIELDS) is True def test_etudiant_bulletin_semestre(api_headers): """ Route: /etudiant/etudid//formsemestre//bulletin """ ##################### LONG ######################## ######### Test etudid ######### r = requests.get( API_URL + "/etudiant/etudid/" + str(ETUDID) + "/formsemestre/1/bulletin", 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", 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", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 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", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 404 def test_etudiant_groups(api_headers): """ Route: /etudiant/etudid//formsemestre//groups """ fields = [ "partition_id", "id", "formsemestre_id", "partition_name", "numero", "bul_show_rank", "show_in_lists", "group_id", "group_name", ] ######### Test etudid ######### r = requests.get( API_URL + "/etudiant/etudid/1/formsemestre/1/groups", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 groups = r.json() assert len(groups) == 1 # dans un seul groupe group = groups[0] fields_ok = verify_fields(group, fields) assert fields_ok is True ######### Test code nip ######### r = requests.get( API_URL + "/etudiant/nip/" + str(NIP) + "/formsemestre/1/groups", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 groups = r.json() assert len(groups) == 1 # dans un seul groupe group = groups[0] fields_ok = verify_fields(group, fields) assert fields_ok is True ######### Test code ine ######### r = requests.get( API_URL + "/etudiant/ine/" + str(INE) + "/formsemestre/1/groups", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 groups = r.json() assert len(groups) == 1 # dans un seul groupe group = groups[0] fields_ok = verify_fields(group, fields) assert fields_ok is True