Doc tests API

This commit is contained in:
Emmanuel Viennet 2022-05-06 17:36:19 +02:00
parent 2b56b6eb23
commit 451594132e
3 changed files with 70 additions and 2 deletions

View File

@ -173,6 +173,7 @@ particuliers (décision de jury manuelle).
- [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2). - [x] pour le passage en S5, avoir validé toutes les UE du BUT 1 (S1 et S2).
Il faut donc: Il faut donc:
1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE 1. Construire les regroupements d'UE et calculer la moyenne des moyennes d'UE
(a priori de même poids, cela n'est pas spécifié dans les textes). (a priori de même poids, cela n'est pas spécifié dans les textes).

View File

@ -80,7 +80,11 @@ Les autorisations et rôles sont gérés exactement comme pour l'application.
Exemple avec `curl` (un outil en ligne de commande présent sur la plupart des Exemple avec `curl` (un outil en ligne de commande présent sur la plupart des
systèmes): systèmes):
curl -u user_name:password --request POST https://SERVEUR/ScoDoc/api/tokens curl -u user_name:password --request POST https://SERVEUR/ScoDoc/api/tokens
ou la même chose avec `http`:
http --auth user_name:password POST https://SERVER/ScoDoc/api/tokens
`SERVEUR` est l'adresse (IP ou nom) de votre serveur. `SERVEUR` est l'adresse (IP ou nom) de votre serveur.
La réponse doit ressembler à ceci: La réponse doit ressembler à ceci:

View File

@ -28,7 +28,7 @@ lance l'ensemble des tests unitaires.
## Tests Selenium (web) ## Tests Selenium (web)
TODO (Aurélien, JMP) TODO (Aurélien, JMP) *ce projet est abandonné pour l'instant*.
## Portail pour tests ## Portail pour tests
@ -42,6 +42,69 @@ Lancement:
/opt/scodoc/tools/fakeportal/fakeportal.py /opt/scodoc/tools/fakeportal/fakeportal.py
## Tests de l'API ScoDoc9
L'API est [documentée ici](ScoDoc9API.md).
Des tests sont disponibles sous `scodoc/tests/api`. Le mécanisme de test est un
peu différent de celui des tests unitaire: on test un *client* de l'API. Il faut
donc un serveur, tournant sur la même machine ou sur une machine distante. Ce
serveur doit avoir été configuré avec des données de test.
### Configuration du serveur pour tester l'API
1. modifier /opt/scodoc/.env pour indiquer
FLASK_ENV=test_api
FLASK_DEBUG=1
2. En tant qu'utilisateur scodoc, lancer:
tools/create_database.sh --drop SCODOC_TEST_API
flask db upgrade
flask sco-db-init --erase
flask init-test-database
Ces commandes vont effacer la base `SCODOC_TEST_API` si elle existe, la
recréer, mettre à jour le schéma pour la dernière version de ScoDoc installée,
l'initialiser et la peupler de données fictives pour les tests.
3. Relancer ScoDoc:
flask run --host 0.0.0.0
### Configuration du client de test API
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
`scodoc/tests/api/.env`, et éditer ce fichier `.env`pour y configurer votre
*client* de test (ne pas confondre avec `scodoc/.env` qui est la config de
votre serveur).
Normalement, il est suffisant d'indiquer l'URL de votre serveur. Si le
client de test est sur la même machine que le serveur ScoDoc, c'est simplement:
```
SCODOC_URL = "http://localhost:5000/"
```
### Lancement des tests de l'API
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise `pytest`sur
le client (qui peut être un autre shell de la même machine, bien sûr).
```
cd /opt/scodoc/
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test
```
Rappelons quelques options utiles de `pytest`: `-x` permet de s'arrêter sur la
première erreur, et `--pdb` lance directement le débuggueur sur l'erreur.
Ainsi,
```
pytest --pdb -x tests/api/test_api_departements.py
```
lancera un test en mode "interactif", utile pour les mises au point.