Création du mock de l'API Ecole Directe pour les tests unitaires.
Celui-ci est basé sur le projet studoo/ecole-directe-api
Ce rendre sur la page des docker/bfoujols/mock-api-ecole-directe et récupérer la dernière version.
docker pull bfoujols/mock-api-ecole-directe
docker run --name api-ecole-directe -p 9042:80 -d bfoujols/mock-api-ecole-directe
Vous pouvez maintenant accéder à l'API via l'adresse http://localhost:9042
Vous pouvez tester l'API via Insomnia :
Ce mock auto-génère des données à travers des fakers :
Visualisation des données des classes
Visualisation des données des étudiants
Visualisation des données des profs
Certains users sont configurés dans le fichier de configDataSet
Login/Password | Role | Niveau | Id Niveau |
---|---|---|---|
FPELTIER/test | Etudiante | BTS SIO 1 année A (1TSSIOA) | 107 |
PTORRE/test | Etudiante | BTS SIO 1 année A (1TSSIOA) | 107 |
JBOULLAM/test | Etudiant | Bachelor CSI | 140 |
Login/Password | Role | Id Classe |
---|---|---|
JBOUVIER/test | Prof | 107,120,134,140,141 |
BDAN/test | Prof | 107,120 |
Voici les étapes à suivre :
La variable "container_name" doit être changé afin d'éviter tout conflit. La variable "ports" est le port (9042) accessible depuis l'extérieur de Docker. Celui-ci peut être personnalisé, néanmoins le port interne est 80 (apache). Le volume sert à rendre accessible dans votre projet les fichiers de configuration et la base de données SQLite.
version: "3"
services:
api:
container_name: mock-api-ecole-directe
image: bfoujols/mock-api-ecole-directe:latest
ports:
- "9042:80"
volumes:
- ./var/dbdataset:/var/www/mock-ecole-directe-api/var
volumes:
dbdata:
Pour permettre la personnalisation, vous devez télécharger le modèle de configuration via l'URL suivante :
- Création du dossier dbdataset dans le dossier var/
mkdir var/dbdataset
- Téléchargement du fichier de configuration Pour windows
wget "https://raw.githubusercontent.com/studoo-app/mock-ecole-directe-api/main/var/configDataset.json" > var/dbdataset/configDataset.json
Pour linux et macos
curl -fsS https://raw.githubusercontent.com/studoo-app/mock-ecole-directe-api/main/var/configDataset.json > var/dbdataset/configDataset.json
Ce modèle exemple vous servira à comprendre les différents paramètres pour :
Vous pouvez personnaliser votre établissement :
{
"organisation" : {
"nomEtablissement" : "<String>", // Nom de l'etablissement
"codeOgec" : "<String>", // Code de l'établissement
[...]
}
}
Exemple :
{
"organisation" : {
"nomEtablissement" : "STUDOO SCHOOL",
"codeOgec" : "0345587-NC",
[...]
}
}
Dans la section "organisation" puis "V3" (version de APi), vous pouvez personnaliser les classes :
"promo" : "<String>", // Promotion avec le format YYYY-YYYY
Exemple :
"promo" : "2023-2024",
Dans la section "organisation" puis "V3" (version de APi), vous pouvez personnaliser les classes :
"classes" : {
"<Interger>" : { // ID unique de la classe
"libelle" : "<String>", // Libellé de la classe
"code" : "<String>" // Code de la classe
},
Exemple :
{
"organisation" : {
[...]
"v3" : {
"promo" : "2023-2024",
"classes" : {
"107" : {
"libelle" : "1 TS SIO A",
"code" : "1TSSIOA"
},
"120" : {
"libelle" : "1 TS SIO B",
"code" : "1TSSIOB"
},
"134" : {
"libelle" : "1 TS SIO - année alternance",
"code" : "1TSSIOALT"
},
L'ensemble des étudiants sont généré par un faker. Pour des soucis de test, vous pouvez figer des étudiants dans le fichier de configuration. Par classe, chaque étudiant peut être présent :
"classes" : {
"<Interger>" : { // ID unique de la classe
"libelle" : "<String>", // Libellé de la classe
"code" : "<String>" // Code de la classe
."etudiants" : {
"<Integer>" : { // Position dans le tableau insertion dans la base
"nom": "<String>", // Nom de l'étudiant
"prenom": "<String>", // Prenom de l'étudiant
"email": "<String>", // Email de l'étudiant
"telPortable": "<String>", // Téléphone de l'étudiant
"sexe": "<String (F ou M)>", // Genre de l'étudiant
"login": "<String>", // Login de l'étudiant
"idLogin" : "<Integer>", // Id interne afin de récuperer l'étudiant en cas de changement majeur
"password": "<String>", // Mot de passe de l'étudiant (Non crypté pour des soucis de test)
"uid": "<String>", // UID de l'étudiant 16bit https://fr.wikipedia.org/wiki/Universally_unique_identifier
"tokenExpiration": "<DateTime YYYY-MM-DD HH:MM:SS>", // La date limite d'expiration du token d'authentification
"lastConnexion": "<DateTime YYYY-MM-DD HH:MM:SS>", // Dernier connexion à l'application
"anneeScolaireCourante": "<String YYYY-YYYY>" // Année de promotion de l'étudiant
},
Exemple :
"classes" : {
"107" : {
"libelle" : "1 TS SIO A",
"code" : "1TSSIOA",
"etudiants" : {
"1" : {
"nom": "Peltier",
"prenom": "Flore",
"email": "fp@test.com",
"telPortable": "07 23 45 23 89",
"sexe": "F",
"login": "FPELTIER",
"idLogin" : "7647334",
"password": "test",
"uid": "98432dd9-c483-3669-a31e-153fec2eac72",
"tokenExpiration": "2023-10-08 10:10:03",
"lastConnexion": "2023-10-08 10:10:03",
"anneeScolaireCourante": "2020-2021"
},
Dans la section "organisation" puis "V3" (version de APi), vous pouvez personnaliser les profs : (Les variables sont équivalentes à la structure d'étudiant)
"professeurs" : {
"<integer>": {
"nom": "<String>",
"prenom": "<String>",
"email": "<String>",
"telPortable": "<String>",
"sexe": "<String>",
"login": "<String>",
"idLogin" : "<Integer>",
"password": "<String>",
"uid": "<String>",
"tokenExpiration": "<DateTime YYYY-MM-DD HH:MM:SS>",
"lastConnexion": "<DateTime YYYY-MM-DD HH:MM:SS>",
"anneeScolaireCourante": "<String>",
"classes" : "<String>"
},
Exemple :
"professeurs" : {
"1": {
"nom": "Bouvier",
"prenom": "Julien",
"email": "Julien.Bouvier@test.fr",
"telPortable": "07 11 81 23 83",
"sexe": "M",
"login": "JBOUVIER",
"idLogin" : "34867434",
"password": "test",
"uid": "0f9fdc75-fd68-3fe0-8a09-1864f80025f7",
"tokenExpiration": "2023-10-08 10:10:03",
"lastConnexion": "2023-10-08 10:10:03",
"anneeScolaireCourante": "2020-2021",
"classes" : "107,120,134,140,141"
},
docker compose up -d
http://localhost:9042/init