Tổng quan
Bộ test case thực thi được cho toàn bộ dự án mkt-diem-thi-cha: public API /api/exam-voucher/*, admin API /api/admin/exam-voucher/*, business logic (scoring/tier/mask/dedup), flow UI và static pages. Mỗi case bám REQ.md + code thực tế.
40
Tổng case
40
⏳ Pending
0
✅ Pass
0
❌ Fail
Môi trường & điều kiện test
| Public base URL | http://localhost:3000 (local) · https://diemthi.xjaofeng.workers.dev (deployed) |
| Env bắt buộc | DATABASE_URL, SCORE_TICKET_SECRET, ADMIN_API_SECRET |
| CAPTCHA test | đặt CAPTCHA_PROVIDER=none để bypass verify server-side; hoặc Turnstile test token + ALLOW_TEST_CAPTCHA=true |
| Rate-limit | chỉ enforce khi có binding RATE_LIMIT_KV (deployed worker). Local không KV → fail-open. Case *-RATELIMIT-* chạy trên worker. |
| Ticket TTL | SCORE_TICKET_TTL_S (default 900s = 15 phút) |
| Seed SBD (mode demo) | 06002597, 06009999, 06001000, 06005500, 06004400 |
| Bảng tier (REQ §5.1) | T1 <5 = 100k · T2 [5,6) = 200k · T3 [6,7) = 300k · T4 [7,8) = 400k · T5 [8,9) = 500k · T6 [9,10) = 1.000k · T7 =10 = 2.000k |
| VN_PHONE_REGEX | ^0[35789]\d{8}$ (10 số, đầu 0 + 3/5/7/8/9) |
| Admin auth | Bearer ADMIN_API_SECRET ở header Authorization; resend actor qua header x-admin-email |
Danh sách test case
Status Pass/Fail chỉ set sau khi chạy và điền Actual. Case Fail → ghi đủ Actual làm repro cho qa-report.