# -*- 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_absences.py """ import requests from tests.api.setup_test_api import API_URL, CHECK_CERTIFICATE, api_headers # Etudiant pour les tests from tests.api.tools_test_api import ( verify_fields, ABSENCES_FIELDS, ABSENCES_GROUP_ETAT_FIELDS, ) ETUDID = 1 # absences def test_absences(api_headers): """ Test 'absences' Route : - /absences/etudid/ """ r = requests.get( f"{API_URL}/absences/etudid/{ETUDID}", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 absences = r.json() assert isinstance(absences, list) for abs in absences: assert verify_fields(abs, ABSENCES_FIELDS) is True assert isinstance(abs["jour"], str) assert isinstance(abs["matin"], bool) assert isinstance(abs["estabs"], bool) assert isinstance(abs["estjust"], bool) assert isinstance(abs["description"], str) assert isinstance(abs["begin"], str) assert isinstance(abs["end"], str) assert abs["begin"] < abs["end"] # absences_justify def test_absences_justify(api_headers): """ Test 'absences_just' Route : - /absences/etudid//just """ r = requests.get( f"{API_URL}/absences/etudid/{ETUDID}/just", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 absences = r.json() assert isinstance(absences, list) for abs in absences: assert verify_fields(abs, ABSENCES_FIELDS) is True assert isinstance(abs["jour"], str) assert isinstance(abs["matin"], bool) assert isinstance(abs["estabs"], bool) assert isinstance(abs["estjust"], bool) assert isinstance(abs["description"], str) assert isinstance(abs["begin"], str) assert isinstance(abs["end"], str) assert abs["begin"] < abs["end"] def test_abs_groupe_etat(api_headers): """ Test 'abs_groupe_etat' Routes : - /absences/abs_group_etat/ - /absences/abs_group_etat/group_id//date_debut//date_fin/ """ group_id = 1 r = requests.get( f"{API_URL}/absences/abs_group_etat/{group_id}", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r.status_code == 200 list_absences = r.json() assert isinstance(list_absences, list) list_id_etu = [] for etu in list_absences: list_id_etu.append(etu["etudid"]) assert verify_fields(etu, ABSENCES_GROUP_ETAT_FIELDS) is True assert isinstance(etu["etudid"], int) assert isinstance(etu["list_abs"], list) list_abs = etu["list_abs"] for abs in list_abs: assert verify_fields(abs, ABSENCES_FIELDS) is True assert isinstance(abs["jour"], str) assert isinstance(abs["matin"], bool) assert isinstance(abs["estabs"], bool) assert isinstance(abs["estjust"], bool) assert isinstance(abs["description"], str) assert isinstance(abs["begin"], str) assert isinstance(abs["end"], str) assert abs["begin"] < abs["end"] all_unique = True for id in list_id_etu: if list_id_etu.count(id) > 1: all_unique = False assert all_unique is True date_debut = "Fri, 15 Apr 2021 00:00:00 GMT" date_fin = "Fri, 18 Apr 2022 00:00:00 GMT" r1 = requests.get( f"{API_URL}/absences/abs_group_etat/group_id/{group_id}/date_debut/{date_debut}/date_fin/{date_fin}", headers=api_headers, verify=CHECK_CERTIFICATE, ) assert r1.status_code == 200 list_absences1 = r.json() assert isinstance(list_absences1, list) list_id_etu1 = [] for etu in list_absences1: list_id_etu1.append(etu["etudid"]) assert verify_fields(etu, ABSENCES_GROUP_ETAT_FIELDS) is True assert isinstance(etu["etudid"], int) assert isinstance(etu["list_abs"], list) list_abs1 = etu["list_abs"] for abs in list_abs1: assert verify_fields(abs, ABSENCES_FIELDS) is True assert isinstance(abs["jour"], str) assert isinstance(abs["matin"], bool) assert isinstance(abs["estabs"], bool) assert isinstance(abs["estjust"], bool) assert isinstance(abs["description"], str) assert isinstance(abs["begin"], str) assert isinstance(abs["end"], str) assert abs["begin"] < abs["end"] all_unique1 = True for id in list_id_etu1: if list_id_etu1.count(id) > 1: all_unique1 = False assert all_unique1 is True # XXX TODO # def reset_etud_abs(api_headers): # """ # Test 'reset_etud_abs' # # Routes : # - /absences/etudid//list_abs//reset_etud_abs # - /absences/etudid//list_abs//reset_etud_abs/only_not_just # - /absences/etudid//list_abs//reset_etud_abs/only_just # """ # list_abs = [] # r = requests.get( # f"{API_URL}/absences/etudid/{ETUDID}/list_abs/{list_abs}/reset_etud_abs", # headers=api_headers, # verify=CHECK_CERTIFICATE, # ) # assert r.status_code == 200 # # r_only_not_just = requests.get( # f"{API_URL}/absences/etudid/{ETUDID}/list_abs/{list_abs}/reset_etud_abs/only_not_just", # headers=api_headers, # verify=CHECK_CERTIFICATE, # ) # assert r.status_code == 200 # # # r_only_just = requests.get( # f"{API_URL}/absences/etudid/{ETUDID}/list_abs/{list_abs}/reset_etud_abs/only_just", # headers=api_headers, # verify=CHECK_CERTIFICATE, # ) # assert r.status_code == 200