Task 3-2: Integration Test - RBAC Role Check
Phase: 3 - Testing Priority: Medium Depends on: task-1-1 Reference: SPEC.md — xem mục 4 (ADM-F-02 RBAC) và mục 5 (Acceptance Criteria: "Admin với wrong role → 403")
Background
Test RBAC: admin với role không đủ quyền phải nhận 403.
Test scenarios
Setup note: Tạo test class
AdminRbacIntegrationTesttrongadmin/src/test/java/. Cần seed ít nhất hai admin accounts trong test DB: - Account 1:SUPER_ADMINrole - Account 2: regularADMIN(hoặcOPERATOR) roleDùng
@BeforeEachđể login cả hai account và lưu lại JWT tokens tương ứng. Đảm bảoRoleEnum.SUPER_ADMINđược assign đúng cho Account 1.
CheatController RBAC (sau task-1-1)
- [ ] Login với SUPER_ADMIN role →
POST /api/admin/cheats/add-coin→ successVerify HTTP 200, không có 403 trong response
- [ ] Login với regular ADMIN role →
POST /api/admin/cheats/add-coin→ 403 ForbiddenVerify HTTP 403; Spring Security phải block tại
@PreAuthorizelevel trước khi method body chạy
Feature toggle (ops-level)
- [ ] Admin với OPERATOR role →
PUT /api/admin/feature-toggles/{key}→ depends on rule configXem
RuleEnumđể biết rule nào guard endpoint này; test với admin có và không có rule đó - [ ] Admin không có rule → 403
Verify HTTP 403 với error message liên quan đến authorization
Read vs write
- [ ] Admin với READ_ONLY role →
GETendpoints thành công,POST/PUT/DELETE→ 403Test ít nhất một
GETendpoint (ví dụGET /api/admin/users) và mộtPOSTendpoint (ví dụPOST /api/admin/users) với READ_ONLY token
Verification / Acceptance Criteria
- [ ] SUPER_ADMIN có thể gọi
/cheats/add-coin: HTTP 200 trả về sau task-1-1 được implement - [ ] Non-SUPER_ADMIN bị block tại
/cheats/add-coin: HTTP 403 trả về; không có audit log[CHEAT_AUDIT](vì block trước khi vào method) - [ ] Rule-based guard hoạt động đúng: Admin với đúng rule → 200; admin thiếu rule → 403
- [ ] READ_ONLY enforcement: READ_ONLY admin không thể gọi bất kỳ mutating endpoint nào
- [ ] Tất cả test scenarios pass: Chạy
AdminRbacIntegrationTest→ 0 failures - [ ] Test class tham khảo:
AdminRbacIntegrationTest— đặt trongadmin/src/test/java/.../controller/
Files to Modify
(Test-only task — không modify production code, chỉ tạo/cập nhật test files)
admin/src/test/java/.../controller/AdminRbacIntegrationTest.java(new hoặc update)