Aller au contenu principal

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;
});
info

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!

  1. Dupliquez la requête de création à l'aide de l'option Duplicate

  2. Renommez la requête dupliquée pour Créer un projet invalide

  3. Dans le body de la requête, entrez un nom vide

    {
    "nom": "",
    "description": "Un nouveau projet créé par API!"
    }
  4. 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;
    });
  5. 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")
    })
attention

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!