forked from ScoDoc/ScoDoc
Fix tests unitaires API (ok)
This commit is contained in:
parent
f7186c6316
commit
0b1eaf4464
@ -127,8 +127,6 @@ def check_fields(data: dict, fields: dict = None):
|
|||||||
data (dict): un dictionnaire (json de retour de l'api)
|
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.
|
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())
|
assert set(data.keys()) == set(fields.keys())
|
||||||
for key in data:
|
for key in data:
|
||||||
if key in ("moduleimpl_id", "desc", "user_id", "external_data"):
|
if key in ("moduleimpl_id", "desc", "user_id", "external_data"):
|
||||||
|
@ -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/<int: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/<int: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/<int:group_id>
|
|
||||||
- /absences/abs_group_etat/group_id/<int:group_id>/date_debut/<string:date_debut>/date_fin/<string: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/<int:etudid>/list_abs/<string:list_abs>/reset_etud_abs
|
|
||||||
# - /absences/etudid/<int:etudid>/list_abs/<string:list_abs>/reset_etud_abs/only_not_just
|
|
||||||
# - /absences/etudid/<int:etudid>/list_abs/<string: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
|
|
@ -79,7 +79,7 @@ def test_route_assiduite(api_headers):
|
|||||||
|
|
||||||
# Bon fonctionnement == id connu
|
# Bon fonctionnement == id connu
|
||||||
data = GET(path="/assiduite/1", headers=api_headers)
|
data = GET(path="/assiduite/1", headers=api_headers)
|
||||||
check_fields(data)
|
check_fields(data, fields=ASSIDUITES_FIELDS)
|
||||||
|
|
||||||
# Mauvais Fonctionnement == id inconnu
|
# Mauvais Fonctionnement == id inconnu
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ def test_route_create(api_admin_headers):
|
|||||||
path=f'/assiduite/{res["success"][0]["message"]["assiduite_id"]}',
|
path=f'/assiduite/{res["success"][0]["message"]["assiduite_id"]}',
|
||||||
headers=api_admin_headers,
|
headers=api_admin_headers,
|
||||||
)
|
)
|
||||||
check_fields(data)
|
check_fields(data, fields=ASSIDUITES_FIELDS)
|
||||||
|
|
||||||
data2 = create_data("absent", "02", MODULE, "desc")
|
data2 = create_data("absent", "02", MODULE, "desc")
|
||||||
res = POST_JSON(f"/assiduite/{ETUDID}/create", [data2], api_admin_headers)
|
res = POST_JSON(f"/assiduite/{ETUDID}/create", [data2], api_admin_headers)
|
||||||
|
@ -304,7 +304,7 @@ def test_bulletins(api_headers):
|
|||||||
)
|
)
|
||||||
assert isinstance(evaluation["date_debut"], (str, NoneType))
|
assert isinstance(evaluation["date_debut"], (str, NoneType))
|
||||||
assert isinstance(evaluation["date_fin"], (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["poids"], dict)
|
||||||
assert isinstance(evaluation["note"], dict)
|
assert isinstance(evaluation["note"], dict)
|
||||||
assert isinstance(evaluation["url"], str)
|
assert isinstance(evaluation["url"], str)
|
||||||
|
@ -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 )
|
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_assiduites as scass
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
|
Loading…
Reference in New Issue
Block a user