Tester l'API

Exercice 5 sur 6 du chapitre 6 · 240 XP · 5 objectifs vérifiés par des tests

Notions abordées : jsonRequest()Tests d'APIJSONJeton d'accès

L'API des parchemins est devenue le premier canal de réservation de la taverne. Une régression y coûterait cher. Et une fuite du sceau d'une guilde coûterait encore plus cher.

Votre mission

Dans tests/Taverne/ApiTest.php, préparez une guilde (avec le sceau self::SCEAU), un plat et un avis, puis testez :

  1. GET /api/plats : du JSON, et seulement les champs de la carte (ni avis, ni note) ;
  2. POST /api/reservations avec le sceau : 201, et la réponse nomme la guilde ;
  3. cette réponse ne contient jamais le sceau ;
  4. sans sceau : 401 ;
  5. 13 aventuriers : 422, avec une violation sur personnes.

Tester une API

$this->client->jsonRequest('GET', '/api/plats');
$this->client->jsonRequest('POST', '/api/reservations', ['nom' => 'Gimli', …], ['HTTP_AUTHORIZATION' => 'Bearer …']);

$this->assertResponseStatusCodeSame(201);
$json = json_decode($this->client->getResponse()->getContent(), true);

Soyez précis

Pour une API, « ça répond » ne suffit pas : ce sont les détails qui forment le contrat avec les parchemins. Le code exact (201 n'est pas 200), la liste exacte des champs, et ce qui ne doit jamais apparaître.

Quatre mutants 🐛, un par détail.