ScoDoc-PE/tests/api
2024-02-11 12:05:43 +01:00
..
__init__.py Fixes #374: bulletins BUT si non publiés 2022-05-04 05:45:46 +02:00
dotenv_exemple Automatise les tests unitaires de l'API 2022-12-07 13:22:11 +01:00
essai_tous_semestres.py mini-script d'essai de l'API 2023-04-13 08:42:53 +02:00
exemple-api-basic.py Remplace variable 'format' par 'fmt' dans toutes les fonctions et URLs (sauf routes API documentées) 2023-09-21 10:20:19 +02:00
exemple-api-list-modules.py typo 2024-01-22 13:18:54 +01:00
exemple-api-scodoc7.py Remplace variable 'format' par 'fmt' dans toutes les fonctions et URLs (sauf routes API documentées) 2023-09-21 10:20:19 +02:00
make_samples.py Configuration: éditeur de rôles et permissions 2023-09-29 21:17:31 +02:00
README.md Automatise les tests unitaires de l'API 2022-12-07 13:22:11 +01:00
setup_test_api.py Fix bug: evaluations sans dates 2024-01-22 09:57:41 +01:00
start_api_server.sh Building script: integrate full unit tests and API tests 2023-02-21 12:46:52 +01:00
test_api_assiduites.py Assiduites : ajout test unitaire countCalculator + maj autres tests 2024-01-05 13:42:55 +01:00
test_api_billets.py renomme /billets_absence/add en /billets_absence/create 2022-08-02 08:48:08 +02:00
test_api_departements.py Ajout de timeouts sur toutes les requêtes externes (y compris tests API) 2023-04-06 10:38:31 +02:00
test_api_etudiants.py Annotations étudiants: API et tests 2024-02-11 12:05:43 +01:00
test_api_evaluations.py API evaluation: create avec poids, /delete + tests unitaires + corrections 2023-08-26 16:34:56 +02:00
test_api_formations.py Ajout de timeouts sur toutes les requêtes externes (y compris tests API) 2023-04-06 10:38:31 +02:00
test_api_formsemestre_data.py API: groups_auto_assignment 2023-05-15 23:39:08 +02:00
test_api_formsemestre.py API: remet /formsemestre/<int:formsemestre_id>/etat_evals 2024-02-05 00:10:56 +01:00
test_api_jury.py Nouvelle page de visu/saisie des décisions RCUEs: validation_rcues 2023-07-16 19:59:45 +02:00
test_api_justificatif2.txt Assiduités : Ajout des tests (Unit/API) 2023-06-02 11:41:35 +02:00
test_api_justificatif.txt Assiduités : Ajout des tests (Unit/API) 2023-06-02 11:41:35 +02:00
test_api_justificatifs.py Assiduites : fix typo type test_api_justif 2024-01-18 15:09:39 +01:00
test_api_logos.py - API: added POST etudiant/etudid/int:etudid/photo 2023-08-11 23:15:17 +02:00
test_api_partitions.py API: group_set_edt_id. +cosmetic 2023-12-29 02:48:23 +01:00
test_api_permissions.py Fix: assiduite unit tests 2023-12-06 20:57:24 +01:00
test_api_users.py API: enrichit création/édition User 2023-11-21 22:28:50 +01:00
test_test.py Fix #578 API : Gestion semestre verrouillé. + tests unitaires API OK. 2023-01-24 08:12:24 -03:00
tools_test_api.py RGPD: ViewEtudData. Implements #842 2024-01-20 17:37:24 +01:00

Tests unitaires de l'API ScoDoc

Lancement des tests

La première fois, copier le fichier tests/api/dotenv_exemple vers tests/api/.env. Il est normalement inutile de modifier son contenu.

Dans un shell, lancer le script start_api_server.py, qui se charge d'initialiser une base SQL de test et de lancer le serveur ScoDoc approprié.

tests/api/start_api_server.sh

Dans un autre shell, lancer les tests:

pytest tests/api

Notes sur la démarche

  1. On génère une base SQL de test: voir tools/fakedatabase/create_test_api_database.py

    1. En tant qu'utilisateur scodoc, lancer:
    # evite de modifier /opt/scodoc/.env
    export FLASK_ENV=test_api
    export FLASK_DEBUG=1 
    tools/create_database.sh --drop SCODOC_TEST_API
    flask db upgrade
    flask sco-db-init --erase
    flask init-test-database
    

    en plus court:

    export FLASK_ENV=test_api && tools/create_database.sh --drop SCODOC_TEST_API && flask db upgrade &&flask sco-db-init --erase && flask init-test-database
    
  2. On lance le serveur ScoDoc sur cette base

    flask run --host 0.0.0.0
    
  3. On lance les tests unitaires API

    pytest tests/api/test_api_departements.py

Rappel: pour interroger l'API, il fait avoir un utilisateur avec (au moins) la permission ScoView dans tous les départements. Pour en créer un:

 flask user-create lecteur_api LecteurAPI @all
 flask user-password lecteur_api
 flask edit-role LecteurAPI -a ScoView
 flask user-role lecteur_api -a LecteurAPI