Materi
Arti 401 dan 403 sudah dibahas di kelas HTTP dan API Web; di sini keduanya menjadi kasus uji. RFC 9110 menyatakan 401 berarti permintaan tidak membawa kredensial autentikasi yang sah, dan server yang mengirim 401 wajib menyertakan header WWW-Authenticate berisi minimal satu tantangan. 403 berarti server memahami permintaan tetapi menolak memenuhinya, dan MDN menambahkan bahwa untuk 403, masuk ulang tidak mengubah hasilnya.
Pilihan ketiga sering terlewat. RFC 9110 membolehkan server menjawab 404 untuk sumber daya terlarang bila ingin menyembunyikan keberadaannya. Kontrak harus memilih salah satu dan menuliskannya. Bila kontrak memilih 404 untuk data milik orang lain, uji memastikan data orang lain dan data yang memang tidak ada dijawab sama persis. Bila jawabannya berbeda, siapa pun bisa menebak nomor mana yang ada.
| GET /v1/pinjaman/{id} | Pinjaman milik sendiri | Pinjaman anggota lain |
|---|---|---|
| Tanpa token | 401 | 401 |
| Token kedaluwarsa | 401 | 401 |
| Anggota | 200 | 404 |
| Pustakawan | 200 | 200 |
Matriks ditulis dari kontrak, bukan dari perilaku server saat ini. Setiap sel menjadi satu kasus uji. Respons penolakan juga diperiksa isinya: badan 401, 403, atau 404 tidak boleh memuat data sumber daya yang ditolak.