Supertest · JWT Authentication และ Request State
Role Guard และ 403
แยก authentication failure ออกจาก authorization failure
Role guard ตรวจ authorization
เมื่อ request มี token ที่ valid แล้ว role guard จะตัดสินว่าผู้ใช้ทำ action ได้หรือไม่ ตัวอย่างเช่น `admin` ลบ user ได้ แต่ `user` ทั่วไปไม่ได้ กรณีนี้ควรคืน 403 ไม่ใช่ 401
role ไม่มีสิทธิ์TS
ต้องมีทั้ง allow และ deny case
| identity | action | expected |
|---|---|---|
| admin | DELETE /admin/users/1 | 200 หรือ status ตาม contract |
| user | DELETE /admin/users/1 | 403 |
| anonymous | DELETE /admin/users/1 | 401 |
กฎสำคัญ
e2e
ตรวจ role policy ผ่าน HTTP
อย่าเรียก guard method ตรง ๆ ถ้าต้องการพิสูจน์ว่าถูกติดตั้งกับ route จริง
fixture
fixture ต้องบอก role
ชื่อ helper เช่น `loginAsAdmin()` และ `loginAsUser()` ช่วยให้ intent อ่านได้โดยไม่ต้องเปิดดู token