From 1439c0ee75761158ffd563dfce3a8f2494a34bb1 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Sun, 27 Aug 2023 22:18:57 +0200 Subject: [PATCH] Fix tests unitaires API (ok) --- tests/api/setup_test_api.py | 2 - tests/api/test_api_absences.py | 214 ----------------------------- tests/api/test_api_assiduites.py | 4 +- tests/api/test_api_formsemestre.py | 2 +- tests/unit/test_assiduites.py | 1 + 5 files changed, 4 insertions(+), 219 deletions(-) delete mode 100644 tests/api/test_api_absences.py diff --git a/tests/api/setup_test_api.py b/tests/api/setup_test_api.py index 9c64f3f7..63df403b 100644 --- a/tests/api/setup_test_api.py +++ b/tests/api/setup_test_api.py @@ -127,8 +127,6 @@ def check_fields(data: dict, fields: dict = None): data (dict): un dictionnaire (json de retour de l'api) fields (dict, optional): Un dictionnaire représentant les clés et les types d'une réponse. """ - if fields is None: - fields = ASSIDUITES_FIELDS assert set(data.keys()) == set(fields.keys()) for key in data: if key in ("moduleimpl_id", "desc", "user_id", "external_data"): diff --git a/tests/api/test_api_absences.py b/tests/api/test_api_absences.py deleted file mode 100644 index 41107aa1..00000000 --- a/tests/api/test_api_absences.py +++ /dev/null @@ -1,214 +0,0 @@ -# -*- 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 app.scodoc import sco_utils as scu -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, - timeout=scu.SCO_TEST_API_TIMEOUT, - ) - 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, - timeout=scu.SCO_TEST_API_TIMEOUT, - ) - 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, - timeout=scu.SCO_TEST_API_TIMEOUT, - ) - 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"] - - # vérifie que chaque étudiant n'apparait qu'une seule fois - assert len(set(list_id_etu)) == len(list_id_etu) - - 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, - timeout=scu.SCO_TEST_API_TIMEOUT, - ) - 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, -# timeout=scu.SCO_TEST_API_TIMEOUT, -# ) -# 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, -# timeout=scu.SCO_TEST_API_TIMEOUT, -# ) -# 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, -# timeout=scu.SCO_TEST_API_TIMEOUT, -# ) -# assert r.status_code == 200 diff --git a/tests/api/test_api_assiduites.py b/tests/api/test_api_assiduites.py index 895d4c04..13330471 100644 --- a/tests/api/test_api_assiduites.py +++ b/tests/api/test_api_assiduites.py @@ -79,7 +79,7 @@ def test_route_assiduite(api_headers): # Bon fonctionnement == id connu data = GET(path="/assiduite/1", headers=api_headers) - check_fields(data) + check_fields(data, fields=ASSIDUITES_FIELDS) # Mauvais Fonctionnement == id inconnu @@ -206,7 +206,7 @@ def test_route_create(api_admin_headers): path=f'/assiduite/{res["success"][0]["message"]["assiduite_id"]}', headers=api_admin_headers, ) - check_fields(data) + check_fields(data, fields=ASSIDUITES_FIELDS) data2 = create_data("absent", "02", MODULE, "desc") res = POST_JSON(f"/assiduite/{ETUDID}/create", [data2], api_admin_headers) diff --git a/tests/api/test_api_formsemestre.py b/tests/api/test_api_formsemestre.py index 653707ff..f02842dd 100644 --- a/tests/api/test_api_formsemestre.py +++ b/tests/api/test_api_formsemestre.py @@ -304,7 +304,7 @@ def test_bulletins(api_headers): ) assert isinstance(evaluation["date_debut"], (str, NoneType)) assert isinstance(evaluation["date_fin"], (str, NoneType)) - assert isinstance(evaluation["coef"], str) + assert isinstance(evaluation["coef"], (str, NoneType)) assert isinstance(evaluation["poids"], dict) assert isinstance(evaluation["note"], dict) assert isinstance(evaluation["url"], str) diff --git a/tests/unit/test_assiduites.py b/tests/unit/test_assiduites.py index 093d6cf4..fdd98f13 100644 --- a/tests/unit/test_assiduites.py +++ b/tests/unit/test_assiduites.py @@ -7,6 +7,7 @@ ses fonctions liées Ecrit par HARTMANN Matthias (en s'inspirant de tests.unit.test_abs_count.py par Fares Amer ) """ +import pytest import app.scodoc.sco_assiduites as scass import app.scodoc.sco_utils as scu