4-5 Test de la création (Créer projet)
Ensuite, essayons de tester la requête pour créer un projet.
URL pour ce test:
POST
{{baseUrl}}/projets
Tester que la réponse est un succès et de type JSON
On teste comme à l'habitude que le retour est un succès et de type JSON
. En effet, si correctement configuré avec l'en-tête Prefer: return=representation
et Accept: application/vnd.pgrst.object+json
, Supabase retournera l'entité nouvellement créée, soit un objet JSON
contenant le détail du projet.
pm.test("La réponse est un succès et contient du JSON", function () {
pm.response.to.be.success;
pm.response.to.be.withBody;
pm.response.to.be.json;
});
Remarquez l'utilisation de success
ici puisque le retour sera un code 201
(Created). On pourrait tester spécifiquement pour le code 201
, success
est un peu plus large et considérera la gamme des codes 200-299
comme un succès.
Tester que l'objet retourné est bien celui créé
Supabase retournera le nouvel objet créé, au format JSON
si la création a fonctionné.
La requête de création de projet, si vous ne l'avez pas modifié, devrait avoir comme body
le contenu suivant:
{
"nom": "Nouveau projet",
"description": "Un nouveau projet créé par API!"
}
Ainsi, on veut vérifier que l'objet nouvellement créé possède bien le nom Nouveau projet
et idem pour la description. Pour ce faire, on peut utiliser equal
afin de vérifier que la propriété nom
et description
correspondent bien à ce qui a été envoyé.
pm.test("La réponse est de type objet et contient les propriétés attendues", function () {
let jsonData = pm.response.json();
pm.expect(jsonData).to.be.an('object');
pm.expect(jsonData).to.have.property('nom');
pm.expect(jsonData).to.have.property('description');
pm.expect(jsonData.nom).to.equal("Nouveau projet");
pm.expect(jsonData.description).to.equal("Un nouveau projet créé par API!");
});
Tester les validations
Évidemment, il ne devrait pas être possible de créer un projet sans spécifier le nom (idem pour la description). Il faut tester que l'API ne permet pas de créer un projet s'il n'a pas de nom!
-
Dupliquez la requête de création à l'aide de l'option
Duplicate
-
Renommez la requête dupliquée pour
Créer un projet invalide
-
Dans le
body
de la requête, entrez un nom vide{
"nom": "",
"description": "Un nouveau projet créé par API!"
} -
Vérifions que le retour est bien
Bad request
pm.test("La réponse est bad request et contient du JSON", function () {
pm.response.to.be.badRequest;
pm.response.to.be.withBody;
pm.response.to.be.json;
}); -
finalement, vérifions qu'un message d'erreur est présent et qu'il est bien lié à
nom
. Lors d'une erreur, le résultat est le suivant:{
"code": "23514",
"details": "Failing row contains (20, 2025-06-10 20:48:30.951315+00, 2025-06-10 20:48:30.951315+00, , Un nouveau projet créé par API!, null).",
"hint": null,
"message": "new row for relation \"projets\" violates check constraint \"projets_nom_check\""
}Ainsi, pour tester que
details
contient un message d'erreur et que cela est lié ànom
, on peut:pm.test("Impossible de créer le projet, une erreur de validation est retournée", function () {
let jsonData = pm.response.json();
pm.expect(jsonData).to.be.an('object');
pm.expect(jsonData).to.have.property('details');
pm.expect(jsonData).to.have.property('message');
pm.expect(jsonData.details).to.contain("Failing row")
pm.expect(jsonData.message).to.contain("projets_nom_check")
})
Ceci est un exemple de vérification de vérification pour nom et description (les propriétés utilisées pour créer le projet). Pour la mission 1 (tester l'API), vous devez vérifier que les propriétés pertinentes sont présentes!