chore: synchronize project dependencies and update vendor directory files
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# Kế hoạch chi tiết hóa Kịch bản Kiểm Thử (Comprehensive Test Script)
|
||||
|
||||
Dựa theo yêu cầu "kiểm tra cả đúng và cả sai", mình sẽ mở rộng bộ kịch bản kiểm thử (Test Cases) hiện tại lên một mức độ bao phủ sâu hơn (Full Coverage).
|
||||
|
||||
## User Review Required
|
||||
> [!IMPORTANT]
|
||||
> Vui lòng xem danh sách các kịch bản sẽ được bổ sung dưới đây. Nếu bạn đồng ý, hãy nhấn **Proceed** (hoặc xác nhận) để mình tiến hành cập nhật mã nguồn Playwright Automation Test.
|
||||
|
||||
## Proposed Changes
|
||||
|
||||
### 1. Phân hệ Frontend (Người Chơi)
|
||||
Mình sẽ bổ sung thêm các bài test vào tệp `test_frontend.py`:
|
||||
|
||||
#### Các trường hợp Nhập sai / Lỗi (Negative Tests):
|
||||
- **Bỏ trống từng trường một**: Thay vì bỏ trống toàn bộ, test thử điền đủ form nhưng cố tình sót duy nhất một trường (VD: Chỉ bỏ sót Năm sinh, chỉ bỏ sót SĐT) để xem cảnh báo có chính xác không.
|
||||
- **SĐT sai nghiệp vụ**:
|
||||
- Chứa chữ cái: `090123abcd`.
|
||||
- Quá ngắn / Quá dài: `090`, `09012345678999`.
|
||||
- Không bắt đầu bằng số 0: `84901234567`.
|
||||
- **Email sai nghiệp vụ**:
|
||||
- Thiếu `@`: `testemail.com`.
|
||||
- Thiếu domain: `test@.com`.
|
||||
- **Năm sinh sai nghiệp vụ**:
|
||||
- Nhập chữ: `abcd`.
|
||||
- Nhỏ hơn 1900: `1899`.
|
||||
- Lớn hơn năm hiện tại (Tương lai): `2030`.
|
||||
- **Đăng nhập với SĐT chưa đăng ký**: Nhập 1 số điện thoại hoàn toàn mới tinh nhưng cố tình truy cập thẳng vào trang game mà không chịu nhập Name hay các thông tin khác (xem hệ thống có bắt đăng ký lại hay không).
|
||||
- **Thử quay số 2 lần**: Đăng nhập 1 tài khoản đã quay số, cố tình chọc vào nút Quay xem hệ thống có chặn lại không (tránh gian lận).
|
||||
|
||||
#### Các trường hợp Nhập đúng (Positive Tests):
|
||||
- Đăng ký tài khoản mới tinh trơn tru.
|
||||
- Cập nhật thông tin: Đổi Email cũ thành Email mới hợp lệ, đổi Địa chỉ.
|
||||
|
||||
---
|
||||
|
||||
### 2. Phân hệ Backend (Quản Trị Viên)
|
||||
Mình sẽ bổ sung thêm các bài test vào tệp `test_backend.py`:
|
||||
|
||||
#### Các trường hợp Nhập sai / Lỗi (Negative Tests):
|
||||
- **Đăng nhập Admin sai**:
|
||||
- Tài khoản đúng nhưng mật khẩu sai.
|
||||
- Tài khoản không tồn tại.
|
||||
- Bỏ trống 2 ô đăng nhập.
|
||||
- **Quản lý giải thưởng sai**:
|
||||
- Thêm một giải thưởng nhưng để trống trường "Tên giải".
|
||||
- Nhập "Số lượng" (Prize Number) bằng chữ thay vì số.
|
||||
- **Lọc danh sách trúng giải sai**:
|
||||
- Nhập mốc thời gian "Đến ngày" nhỏ hơn mốc "Từ ngày" (VD: Từ 15/07 đến 10/07).
|
||||
|
||||
#### Các trường hợp Nhập đúng (Positive Tests):
|
||||
- Đăng nhập Admin thành công.
|
||||
- Tạo mới 1 giải thưởng hoàn chỉnh (Có upload ảnh, tên, số lượng).
|
||||
- Xóa thành công 1 giải thưởng.
|
||||
- Cấp thêm lượt quay (Thêm lượt quay cho user).
|
||||
- Xuất file Excel thành công và kiểm tra file có được tải xuống máy hay không.
|
||||
|
||||
## Verification Plan
|
||||
1. **Cập nhật Test Script**: Cập nhật tệp tài liệu `test_script.md` để ghi nhận lại danh sách test case đồ sộ này.
|
||||
2. **Viết Automation Code**: Mở rộng mã nguồn `tests/e2e/test_frontend.py` và `test_backend.py`.
|
||||
3. **Chạy & Báo cáo**: Chạy `pytest tests/e2e` (kèm xuất Video) tương tự như lúc nãy để thu về tất cả kết quả chi tiết từng folder cho bạn.
|
||||
@@ -0,0 +1,43 @@
|
||||
# Kế hoạch Triển khai Test Suite Toàn Diện (V3)
|
||||
|
||||
Dựa vào việc phân tích kiến trúc Controller và logic của hệ thống (Frontend và Backend), dưới đây là kế hoạch bổ sung các kịch bản kiểm thử nhằm đạt được độ bao phủ (coverage) cao nhất cho hệ thống quay số.
|
||||
|
||||
## Mục tiêu
|
||||
Đảm bảo mọi API Endpoint, Middleware và các luồng xử lý ngoại lệ (Exception cases) đều được cover. Tránh tình trạng hệ thống văng lỗi 500 khi người dùng gửi request không hợp lệ.
|
||||
|
||||
## Chi tiết các Kịch bản Bổ sung (V3)
|
||||
|
||||
### 1. Frontend Security & APIs (Test Frontend)
|
||||
- **TC_F15: Xác minh Đăng xuất (Logout)**
|
||||
- Đăng nhập thành công, nhấn "Đăng xuất".
|
||||
- Xác nhận session bị xóa và người dùng không thể truy cập lại trang cập nhật thông tin.
|
||||
- **TC_F16: API Security - Gọi trực tiếp `/updateprizeuser`**
|
||||
- Gửi POST request bằng Playwright API context thẳng tới `/updateprizeuser` khi **chưa đăng nhập**.
|
||||
- Kiểm tra xem Server có crash do `Auth::user()` null hay không (dự kiến sẽ trả về lỗi HTTP 500 do code hiện tại không check Auth ở route này, hoặc Laravel tự throw error). Kịch bản này nhằm phát hiện lỗ hổng logic.
|
||||
- **TC_F17: API Check Spined (`/checkspined`)**
|
||||
- Gọi request lấy trạng thái quay của user (đã quay hay chưa).
|
||||
- Test cả khi có Auth và khi không có Auth để đảm bảo nhận được đúng JSON (bắt lỗi "Chưa đăng nhập").
|
||||
|
||||
### 2. Backend Admin Panel (Test Backend)
|
||||
- **TC_B13: Quản lý Người chơi - Thêm mới User**
|
||||
- Đăng nhập Admin -> Mục "Người dùng" -> "Thêm mới".
|
||||
- Điền đầy đủ form tạo User mới (cấp quyền admin_account).
|
||||
- Xác nhận lưu thành công.
|
||||
- **TC_B14: Quản lý Người chơi - Cập nhật User**
|
||||
- Sửa thông tin một User có sẵn (cập nhật trạng thái hoặc reset mật khẩu).
|
||||
- Xác nhận lưu thành công.
|
||||
- **TC_B15: Cấu hình Hệ thống - Đổi Logo/Banner**
|
||||
- Upload file hình ảnh (logo.png) vào cấu hình thay vì chỉ dùng text (như `game_rule`).
|
||||
- Kiểm tra hệ thống chấp nhận file và load preview.
|
||||
- **TC_B16: Chức năng Reset Lượt Quay (Clear Spined)**
|
||||
- Nút "Thao tác" (reset lượt quay) trong danh sách người trúng giải.
|
||||
- Mô phỏng quá trình Admin gọi hàm `update_spined(user_id)` qua AJAX, kiểm tra response `success`.
|
||||
- **TC_B17: Đăng xuất Admin và Quyền (Middleware)**
|
||||
- Nhấn Đăng xuất ở Admin Panel -> Bị đẩy về `wp-admin` (theo code).
|
||||
- Thử dùng tài khoản User bình thường truy cập `/admin/account` -> Xác minh Middleware `UserRole` chặn và đẩy ra ngoài.
|
||||
|
||||
## User Review Required
|
||||
> [!IMPORTANT]
|
||||
> - Ở **TC_F16**, route `/updateprizeuser` hiện tại trong code `IndexController` gọi trực tiếp `Auth::user()->id` mà không có lớp bảo vệ (Middleware) hay `Auth::check()`. Nếu request này được gửi từ khách vãng lai, hệ thống sẽ gặp lỗi **500 Server Error**. Bạn có muốn tôi viết test để mô phỏng lỗi này nhằm ghi nhận bug, hay bạn muốn tôi sửa luôn code Laravel bảo mật route này trước rồi mới test?
|
||||
|
||||
Xin bạn xem qua các kịch bản V3 này và bấm **Proceed** (Phê duyệt) để tôi tiến hành triển khai.
|
||||
@@ -0,0 +1,80 @@
|
||||
# Kịch Bản Kiểm Thử (Test Script) Hệ Thống Quay Số (S.I.S) - Bản Chi Tiết (V2)
|
||||
|
||||
Tài liệu này mô tả các kịch bản kiểm thử (Test Cases) chi tiết bao phủ các trường hợp đúng (Positive) và sai (Negative) cho cả Frontend và Backend.
|
||||
|
||||
> [!NOTE]
|
||||
> **Môi trường Test:**
|
||||
> - Trình duyệt: Chrome, Firefox, Safari, Edge.
|
||||
> - URL: `http://localhost/Quayso/` (Frontend), `http://localhost/Quayso/admin` (Backend).
|
||||
|
||||
---
|
||||
|
||||
## 1. Phân Hệ Người Chơi (Frontend)
|
||||
|
||||
### 1.1 Kiểm tra Nhập Lỗi / Không Hợp Lệ (Negative Tests)
|
||||
Mục tiêu: Đảm bảo hệ thống chặn đứng mọi luồng dữ liệu rác, thiếu, hoặc sai nghiệp vụ.
|
||||
|
||||
| ID | Kịch Bản Test | Bước Thực Hiện | Kết Quả Mong Đợi | Trạng Thái |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| **TC_F01** | Bỏ sót 1 trường bắt buộc | Điền đầy đủ form, nhưng cố tình xóa trắng ô "Số điện thoại" rồi Submit. | Hệ thống báo lỗi đúng vào trường bị thiếu: "Nhập số điện thoại". | ⬜ |
|
||||
| **TC_F02** | SĐT chứa chữ cái | Nhập SĐT là `090123abcd`. Submit. | Báo lỗi: "Số điện thoại không đúng định dạng". | ⬜ |
|
||||
| **TC_F03** | SĐT sai độ dài hoặc đầu số | Nhập SĐT `84901234567` (không có số 0) hoặc `090` (quá ngắn). | Báo lỗi: "Số điện thoại không đúng định dạng". | ⬜ |
|
||||
| **TC_F04** | Email sai định dạng | Nhập `testemail.com` (Thiếu `@`) hoặc `test@.com`. | Báo lỗi: "Email không đúng định dạng". | ⬜ |
|
||||
| **TC_F05** | Năm sinh không hợp lý | Nhập năm `1800` (quá khứ xa) hoặc chữ cái `abcd`. | Báo lỗi: "Năm sinh không hợp lệ" hoặc "Năm sinh phải là số". | ⬜ |
|
||||
| **TC_F06** | Cố tình Bypass đăng nhập | Truy cập thẳng URL `http://localhost/Quayso/game`. | Trình duyệt bị đá văng về lại trang `/login` hoặc báo lỗi bắt buộc nhập. | ⬜ |
|
||||
| **TC_F07** | Thử quay số khi hết lượt | Đăng nhập tài khoản đã có cờ `spined = 1`, click nút Quay số (nếu cố tình làm hiện nút). | Hệ thống từ chối cho phép quay tiếp. | ⬜ |
|
||||
| **TC_F11** | Lỗi Bảo mật XSS | Nhập `<script>alert(1)</script>` vào ô Họ Tên và Submit. | Ký tự bị escape, không bị alert (Thành công qua). | ⬜ |
|
||||
| **TC_F12** | Lỗi cập nhật thiếu thông tin | Vào trang Cập nhật, xóa trống ô "Họ tên" hoặc "Năm sinh" rồi bấm Cập nhật. | Hệ thống báo lỗi không cho phép bỏ trống trường bắt buộc. | ⬜ |
|
||||
|
||||
### 1.2 Kiểm tra Nhập Đúng / Thành công (Positive Tests)
|
||||
Mục tiêu: Đảm bảo người dùng hợp lệ có thể thao tác mượt mà.
|
||||
|
||||
| ID | Kịch Bản Test | Bước Thực Hiện | Kết Quả Mong Đợi | Trạng Thái |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| **TC_F08** | Đăng ký thành công | Điền đầy đủ thông tin hợp lệ (SĐT mới). | Chuyển hướng thành công sang màn hình `/game`. | ⬜ |
|
||||
| **TC_F09** | Đăng nhập thành công | Nhập SĐT cũ đã đăng ký. | Chuyển hướng thành công sang màn hình `/game`. | ⬜ |
|
||||
| **TC_F10** | Cập nhật thông tin | Đăng nhập. Cập nhật lại Email sang địa chỉ khác. Click "Cập nhật". | Hiện thông báo: "Cập nhật tài khoản thành công". | ⬜ |
|
||||
| **TC_F13** | Trải nghiệm Quay số thực tế | Đăng nhập hợp lệ, bấm BẮT ĐẦU QUAY. | Vòng quay chạy, thông báo kết quả trúng giải hiển thị. | ⬜ |
|
||||
| **TC_F14** | Kiểm tra Thể lệ | Bấm nút "Thể lệ tham dự". | Popup Thể lệ game hiển thị ra chứa thông tin đầy đủ. | ⬜ |
|
||||
|
||||
---
|
||||
|
||||
## 2. Phân Hệ Quản Trị (Backend)
|
||||
|
||||
### 2.1 Kiểm tra Lỗi (Negative Tests)
|
||||
Mục tiêu: Ngăn chặn truy cập trái phép và thao tác lỗi của Quản trị viên.
|
||||
|
||||
| ID | Kịch Bản Test | Bước Thực Hiện | Kết Quả Mong Đợi | Trạng Thái |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| **TC_B01** | Bỏ trống đăng nhập Admin | Để trống ô Tên đăng nhập và Mật khẩu. Bấm Login. | Hệ thống báo lỗi yêu cầu nhập đủ trường. | ⬜ |
|
||||
| **TC_B02** | Sai mật khẩu Admin | Nhập đúng Tên đăng nhập, nhập mật khẩu sai bậy bạ. Bấm Login. | Báo lỗi "Đăng nhập thất bại". | ⬜ |
|
||||
| **TC_B03** | Thêm giải thưởng thiếu Tên | Vào `admin/prize/update`, để trống Tên giải, bấm Thêm mới. | Báo lỗi "Nhập tên giải thưởng". | ⬜ |
|
||||
| **TC_B04** | Nhập sai "Số lượng" giải | Vào `admin/prize/update`, nhập Số lượng là chữ "Mười". | Hệ thống không cho nhập hoặc báo lỗi khi Submit. | ⬜ |
|
||||
| **TC_B08** | Upload Ảnh sai định dạng | Thêm/Cập nhật giải thưởng, cố tình upload file `.txt`. | Báo lỗi yêu cầu upload đúng định dạng hình ảnh. (Hoặc Validation chặn) | ⬜ |
|
||||
|
||||
### 2.2 Kiểm tra Đúng / Thành Công (Positive Tests)
|
||||
Mục tiêu: Các tính năng cốt lõi của Admin hoạt động trơn tru.
|
||||
|
||||
| ID | Kịch Bản Test | Bước Thực Hiện | Kết Quả Mong Đợi | Trạng Thái |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| **TC_B05** | Đăng nhập Admin thành công | Nhập đúng Email và Pass. | Vào được Dashboard quản trị `/admin/account`. | ⬜ |
|
||||
| **TC_B06** | Kiểm tra Cột thông tin mới | Truy cập trang "DS Người Nhận Giải". | Nhìn thấy 2 cột "EMAIL" và "NĂM SINH" có chứa dữ liệu. | ⬜ |
|
||||
| **TC_B07** | Lọc và Xuất Excel | Chọn Từ ngày - Đến ngày. Click "Xuất Excel". | Tải thành công file `Danh sách nhận giải.xlsx` về máy. | ⬜ |
|
||||
| **TC_B09** | Cập nhật Giải thưởng | Sửa thông tin 1 giải thưởng, đổi Số lượng thành 100. Bấm Cập nhật. | Cập nhật thành công, số lượng thay đổi. | ⬜ |
|
||||
| **TC_B10** | Xóa Giải thưởng | Click biểu tượng Xóa (Thùng rác) 1 giải thưởng. | Giải thưởng biến mất khỏi danh sách. | ⬜ |
|
||||
| **TC_B11** | Cập nhật Cấu hình hệ thống | Đổi "Số lượt quay". Bấm Lưu cấu hình. | Thông báo cập nhật thành công, số lượt quay lưu lại. | ⬜ |
|
||||
| **TC_B12** | Test Excel Download | Chạy kịch bản tự động tải Excel. | Tải file `.xlsx` thành công vào thư mục máy tính. | ⬜ |
|
||||
|
||||
### V3: Comprehensive Coverage (Luồng Toàn Diện)
|
||||
*Mở rộng bao phủ toàn bộ API bảo mật ngầm, quản lý cấu hình và đăng xuất hệ thống.*
|
||||
|
||||
| ID | Module | Kịch bản Test (Scenario) | Các bước thực hiện (Steps) | Kết quả mong đợi (Expected) |
|
||||
|---|---|---|---|---|
|
||||
| TC_F15 | Đăng xuất | Đăng xuất người chơi | 1. Đăng nhập thành công<br>2. Nhấn 'Đăng xuất' | Trở về trạng thái chưa đăng nhập, không thể truy cập trang `/login` (để update). |
|
||||
| TC_F16 | API Security | Gọi trực tiếp API đổi thưởng khi chưa đăng nhập | 1. Dùng Playwright POST request `/updateprizeuser` (chưa Auth) | Server trả về lỗi chưa đăng nhập, không crash 500. |
|
||||
| TC_F17 | API Check Spined | API kiểm tra trạng thái lượt quay | 1. Chưa Auth: GET `/checkspined`<br>2. Đã Auth: GET `/checkspined` | 1. `{"error":"Chưa đăng nhập"}`<br>2. `{"success":"...","spined":0/1}` |
|
||||
| TC_B13 | User Mgmt | Thêm mới User từ Admin | 1. `/admin/users/update?id=0`<br>2. Điền đủ Form: Tên, Email, Pass, Status<br>3. Submit | Tạo tài khoản thành công. |
|
||||
| TC_B14 | User Mgmt | Cập nhật User từ Admin | 1. Mở User đã có<br>2. Sửa Trạng thái<br>3. Submit | Cập nhật thành công. |
|
||||
| TC_B15 | Cấu hình | Đổi Banner ảnh hệ thống | 1. `/admin/parameter`<br>2. Upload file hình cho Banner<br>3. Submit | Cập nhật thành công, ảnh được lưu. |
|
||||
| TC_B16 | Reset Lượt | Admin Reset lượt quay cho User | 1. `/admin/prizeuser`<br>2. Gọi AJAX hàm `update_spined()` cho 1 User | API trả về `success`, user có thể quay lại. |
|
||||
| TC_B17 | Auth Admin | Admin Đăng xuất | 1. Nhấn Đăng xuất<br>2. Cố gắng vào lại `/admin/account` | Bị đẩy về trang Login, không có quyền. |
|
||||
Reference in New Issue
Block a user