Supertest · JWT Authentication และ Request State
Auth Test User Fixture
เตรียม user และบทบาทที่ test ต้องใช้โดยไม่พึ่งข้อมูลจาก test อื่น
Auth fixture คือ state ที่ test ควบคุมได้
Protected API ต้องรู้ว่า request เป็นของ user ใดและ user มี role อะไร Test fixture จึงควรสร้าง user, credential, role และ Todo ownership ที่ deterministic โดยไม่พึ่งข้อมูลจาก test อื่น
แยก fixture ของ identity กับ resource
| fixture | ตอบคำถาม | ตัวอย่าง |
|---|---|---|
| user fixture | request เป็นใคร | owner@example.com |
| role fixture | มีสิทธิ์ระดับใด | user หรือ admin |
| todo fixture | resource เป็นของใคร | ownerId ของ user |
กฎสำคัญ
deterministic
สร้างข้อมูลที่ test ต้องใช้เอง
อย่า assume ว่า database มี user id 1 เสมอ เพราะลำดับ seed อาจเปลี่ยน
isolation
ล้าง credential state
fixture ควร reset หรือสร้างชื่อที่ไม่ชน เพื่อให้ test รันซ้ำและสลับลำดับได้