Test Cases: Quyền hạn
| Module | CORE-02 | URD | Permissions URD |
|---|
1. Tóm tắt Độ phủ
| Vùng | URD reqs | Test case | Đã phủ |
|---|---|---|---|
Vai trò Cố định (ROLE) | 9 | 13 | ✅ |
Vai trò Tùy chỉnh (CROLE) | 8 | 6 | ✅ |
Catalog Quyền (PERM) | 5 | 5 | ✅ |
Cấp / Thu hồi (GRANT) | 7 | 6 | ✅ |
Quyền Hiệu lực & Phạm vi (EFF) | 4 | 4 | ✅ |
Casbin RBAC với domain theo merchant được bật trên nhánh này — việc lọc và phân giải cấp quyền được chạy đối chứng với enforcer thật, không phải mock.
2. Test Cases
TC-<AREA>-NNNkhớp vớiURD-<AREA>-NNN. Mức ưu tiên = P1 (nghiêm trọng) / P2 (lớn) / P3 (nhỏ).
| TC ID | URD ref | Tình huống | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-ROLE-001 | URD-ROLE-001 | Tám vai trò cố định được seed | 1. Khởi tạo hệ thống 2. Liệt kê vai trò | Super Admin, Admin, Operator, Owner, Cashier, Employee, Customer, Guest đều tồn tại | P1 |
| TC-ROLE-002 | URD-ROLE-003 | Ưu tiên đặt đúng | 1. Kiểm tra ưu tiên vai trò | Lần lượt 999 / 900 / 600 / 500 / 110 / 100 / 10 / 1 | P1 |
| TC-ROLE-003 | URD-ROLE-004 | Bỏ qua với Super Admin | 1. Đăng nhập Super Admin 2. Liệt kê mọi merchant | Trả mọi merchant, không lọc | P1 |
| TC-ROLE-004 | URD-ROLE-004 | Bỏ qua với Admin / Operator | 1. Đăng nhập Admin (rồi Operator) 2. Liệt kê merchant | Trả mọi merchant, bỏ qua lọc | P1 |
| TC-ROLE-005 | URD-ROLE-005 | Owner chỉ thấy org của mình | 1. Owner của Org A (M1,M2) liệt kê merchant; Org B có M3,M4 | Chỉ trả M1, M2 | P1 |
| TC-ROLE-006 | URD-ROLE-006 | Employee thấy merchant được gán | 1. Employee chỉ được gán M1 liệt kê merchant | Chỉ trả M1 | P1 |
| TC-ROLE-007 | URD-ROLE-006 | Cashier giống phạm vi Employee | 1. Cashier được gán M1 liệt kê merchant | Chỉ trả M1 (giống Employee) | P1 |
| TC-ROLE-008 | URD-ROLE-007 | Count được lọc | 1. Owner có 2 merchant count merchant | Count = 2 | P1 |
| TC-ROLE-009 | URD-ROLE-008 | Truy cập ID lạ bị từ chối | 1. Owner của Org A yêu cầu M3 của Org B theo ID | Từ chối truy cập | P1 |
| TC-ROLE-010 | URD-ROLE-008 | Bộ lọc người dùng không nới phạm vi | 1. Owner truyền bộ lọc để gồm Org B | Bộ lọc bị bỏ qua; chỉ trả dữ liệu của mình | P1 |
| TC-ROLE-011 | URD-ROLE-002 | Vai trò hệ thống bất biến | 1. Thử xóa vai trò Super Admin | Bị từ chối | P1 |
| TC-ROLE-012 | URD-ROLE-002 | Ưu tiên hệ thống bất biến | 1. Thử đổi ưu tiên Admin 900→500 | Bị từ chối | P2 |
| TC-ROLE-013 | URD-ROLE-009 | Mở rộng HQ-owner | 1. Owner tại HQ tổ chức liệt kê merchant | Trả mọi merchant anh em của tổ chức | P2 |
| TC-CROLE-001 | URD-CROLE-001 | Tạo vai trò tùy chỉnh | 1. Admin/Owner tạo vai trò với tên + ưu tiên | Vai trò được tạo, type CUSTOM | P1 |
| TC-CROLE-002 | URD-CROLE-002 | Định danh tự sinh & duy nhất | 1. Tạo hai vai trò cùng ưu tiên+tên trong một phạm vi | Cái thứ hai bị từ chối (trùng) | P2 |
| TC-CROLE-003 | URD-CROLE-003 | Bảo vệ ưu tiên khi tạo | 1. Owner tạo vai trò với ưu tiên ≥ của mình | Bị từ chối (nâng quyền) | P1 |
| TC-CROLE-004 | URD-CROLE-004 | Liên kết phạm vi được tạo | 1. Tạo vai trò giới hạn theo một org/merchant | Membership phạm vi được ghi | P2 |
| TC-CROLE-005 | URD-CROLE-006 | Xóa bị chặn khi có người dùng được gán | 1. Xóa vai trò tùy chỉnh có người dùng | Bị chặn — gỡ gán trước | P1 |
| TC-CROLE-006 | URD-CROLE-007 | Xóa cascade | 1. Xóa vai trò tùy chỉnh không có người dùng | Vai trò + cấp quyền + liên kết phạm vi được soft-delete | P1 |
| TC-PERM-001 | URD-PERM-001 | Tạo quyền | 1. Admin tạo quyền với code/action/scope/subject | Quyền được tạo | P1 |
| TC-PERM-002 | URD-PERM-002 | Tính duy nhất code | 1. Tạo quyền với code đã có | Bị từ chối | P1 |
| TC-PERM-003 | URD-PERM-003 | Tên/mô tả i18n | 1. Kiểm tra một quyền | Tên & mô tả mang en + vi | P2 |
| TC-PERM-004 | URD-PERM-004 | Cập nhật quyền | 1. Admin cập nhật tên một quyền | Được cập nhật; code giữ bất biến | P2 |
| TC-PERM-005 | URD-PERM-005 | Xóa bị chặn khi có cấp quyền hoạt động | 1. Xóa một quyền được cấp cho một vai trò | Bị chặn | P1 |
| TC-GRANT-001 | URD-GRANT-001 | Cấp quyền cho vai trò | 1. Admin cấp [P1,P2] cho vai trò | Cấp quyền được tạo, trả về số lượng | P1 |
| TC-GRANT-002 | URD-GRANT-002 | Thu hồi quyền khỏi vai trò | 1. Admin thu hồi một quyền | Cấp quyền bị gỡ | P1 |
| TC-GRANT-003 | URD-GRANT-003 | Cấp idempotent | 1. Cấp một quyền đã cấp | Bỏ qua, trả về số bỏ qua | P2 |
| TC-GRANT-004 | URD-GRANT-004 | Cấp / thu hồi vai trò cho người dùng | 1. Admin gán rồi gỡ một vai trò | Người dùng có rồi mất vai trò ở lần đăng nhập kế tiếp | P1 |
| TC-GRANT-005 | URD-GRANT-005 | Bảo vệ chống nâng quyền | 1. Người thao tác cấp trên một vai trò ≥ ưu tiên của mình | Bị từ chối | P1 |
| TC-GRANT-006 | URD-GRANT-006, URD-GRANT-007 | Xem gán vai trò / người dùng | 1. Liệt kê quyền của vai trò, người dùng, và vai trò của một người dùng | Trả về danh sách đúng | P2 |
| TC-EFF-001 | URD-EFF-001 | Hiệu lực = trực tiếp ∪ kế thừa | 1. Người dùng có cấp vai trò + một cấp trực tiếp 2. Truy vấn hiệu lực | Trả về hợp, đã khử trùng | P1 |
| TC-EFF-002 | URD-EFF-002 | Bộ lọc chế độ | 1. Truy vấn với mode=direct, rồi mode=inherit | Chỉ trực tiếp, rồi chỉ kế thừa | P2 |
| TC-EFF-003 | URD-EFF-003 | Liệt kê org & merchant của người dùng | 1. Truy vấn tổ chức và merchant của một người dùng | Trả về membership đúng | P2 |
| TC-EFF-004 | URD-EFF-004 | Cấp quyền phân giải trong domain hoạt động | 1. Cấp trong Merchant_A 2. Thao tác dưới header Merchant_B | Cấp quyền không áp dụng trong B | P1 |
3. Truy vết
Mọi yêu cầu Must ánh xạ tới ≥1 test case.
| Yêu cầu URD | Test case | Trạng thái |
|---|---|---|
| URD-ROLE-001 | TC-ROLE-001 | ✅ Đã phủ |
| URD-ROLE-002 | TC-ROLE-011, TC-ROLE-012 | ✅ Đã phủ |
| URD-ROLE-003 | TC-ROLE-002 | ✅ Đã phủ |
| URD-ROLE-004 | TC-ROLE-003, TC-ROLE-004 | ✅ Đã phủ |
| URD-ROLE-005 | TC-ROLE-005 | ✅ Đã phủ |
| URD-ROLE-006 | TC-ROLE-006, TC-ROLE-007 | ✅ Đã phủ |
| URD-ROLE-007 | TC-ROLE-008 | ✅ Đã phủ |
| URD-ROLE-008 | TC-ROLE-009, TC-ROLE-010 | ✅ Đã phủ |
| URD-ROLE-009 | TC-ROLE-013 | ✅ Đã phủ |
| URD-CROLE-001 | TC-CROLE-001 | ✅ Đã phủ |
| URD-CROLE-002 | TC-CROLE-002 | ✅ Đã phủ |
| URD-CROLE-003 | TC-CROLE-003 | ✅ Đã phủ |
| URD-CROLE-004 | TC-CROLE-004 | ✅ Đã phủ |
| URD-CROLE-005 | TC-CROLE-001 (đường cập nhật) | ✅ Đã phủ |
| URD-CROLE-006 | TC-CROLE-005 | ✅ Đã phủ |
| URD-CROLE-007 | TC-CROLE-006 | ✅ Đã phủ |
| URD-CROLE-008 | TC-CROLE-003, TC-CROLE-004 | ✅ Đã phủ |
| URD-PERM-001 | TC-PERM-001 | ✅ Đã phủ |
| URD-PERM-002 | TC-PERM-002 | ✅ Đã phủ |
| URD-PERM-003 | TC-PERM-003 | ✅ Đã phủ |
| URD-PERM-004 | TC-PERM-004 | ✅ Đã phủ |
| URD-PERM-005 | TC-PERM-005 | ✅ Đã phủ |
| URD-GRANT-001 | TC-GRANT-001 | ✅ Đã phủ |
| URD-GRANT-002 | TC-GRANT-002 | ✅ Đã phủ |
| URD-GRANT-003 | TC-GRANT-003 | ✅ Đã phủ |
| URD-GRANT-004 | TC-GRANT-004 | ✅ Đã phủ |
| URD-GRANT-005 | TC-GRANT-005 | ✅ Đã phủ |
| URD-GRANT-006 | TC-GRANT-006 | ✅ Đã phủ |
| URD-GRANT-007 | TC-GRANT-006 | ✅ Đã phủ |
| URD-EFF-001 | TC-EFF-001 | ✅ Đã phủ |
| URD-EFF-002 | TC-EFF-002 | ✅ Đã phủ |
| URD-EFF-003 | TC-EFF-003 | ✅ Đã phủ |
| URD-EFF-004 | TC-EFF-004 | ✅ Đã phủ |