# API TESTING - TEMPLATE TEST CASE

---

## 📋 HƯỚNG DẪN ĐIỀN

1. **Method**: Điền GET / POST / PUT / PATCH / DELETE tương ứng với loại request.
2. **Request Body**: Chỉ điền khi Method là POST/PUT/PATCH; để trống nếu là GET/DELETE.
3. **Expected Status Code**: Điền mã HTTP mong đợi (200, 201, 400, 404, 500…); tra cứu tại httpstatuses.com.
4. **Actual Response**: Điền kết quả thực tế sau khi chạy test (status code + mô tả ngắn nội dung response).
5. **Pass/Fail**: Ghi **Pass** nếu Actual khớp Expected, ghi **Fail** + mô tả lệch nếu không khớp.

---

## 🗂️ BẢNG TEST CASE

| STT | Tên Test Case | Method | URL / Endpoint | Request Body | Expected Status Code | Expected Response | Actual Response | Pass/Fail | Ghi chú |
|-----|---------------|--------|----------------|--------------|----------------------|-------------------|-----------------|-----------|---------|
| 01 | Lấy danh sách tất cả tỉnh/thành | GET | `https://provinces.open-api.vn/api/p/` | _(trống)_ | 200 | Mảng JSON gồm 63 tỉnh/thành, mỗi phần tử có `code`, `name`, `division_type` | 200 – Trả về mảng 63 phần tử, đúng cấu trúc | Pass | Kiểm tra tổng số phần tử = 63 |
| 02 | Lấy danh sách tỉnh kèm quận/huyện | GET | `https://provinces.open-api.vn/api/p/?depth=2` | _(trống)_ | 200 | Mảng 63 tỉnh, mỗi tỉnh có thêm field `districts` là mảng quận/huyện | 200 – Có field `districts` trong mỗi object | Pass | Verify `districts` không rỗng với ít nhất 1 tỉnh |
| 03 | Lấy thông tin 1 tỉnh theo code hợp lệ | GET | `https://provinces.open-api.vn/api/p/01` | _(trống)_ | 200 | Object JSON: `{"code":1,"name":"Thành phố Hà Nội","division_type":"thành phố trung ương",…}` | 200 – Object đúng, name = "Thành phố Hà Nội" | Pass | Code `01` = Hà Nội |
| 04 | Lấy tỉnh theo code + depth quận/huyện | GET | `https://provinces.open-api.vn/api/p/01?depth=2` | _(trống)_ | 200 | Object tỉnh Hà Nội kèm field `districts` chứa danh sách các quận/huyện | 200 – `districts` gồm 30 quận/huyện | Pass | Đếm số quận/huyện Hà Nội = 30 |
| 05 | Lấy tỉnh theo code không tồn tại | GET | `https://provinces.open-api.vn/api/p/9999` | _(trống)_ | 404 | Response báo không tìm thấy, không trả về dữ liệu tỉnh | 404 – Body: `{"message":"Not Found"}` hoặc tương tự | Pass | Kiểm tra hệ thống xử lý đúng code lỗi |
| 06 | Lấy danh sách tất cả quận/huyện | GET | `https://provinces.open-api.vn/api/d/` | _(trống)_ | 200 | Mảng JSON toàn bộ quận/huyện trên cả nước, mỗi phần tử có `code`, `name`, `province_code` | 200 – Mảng > 700 phần tử, đúng cấu trúc | Pass | Tổng quận/huyện cả nước ≈ 705 |
| 07 | Lấy thông tin 1 quận/huyện theo code | GET | `https://provinces.open-api.vn/api/d/001` | _(trống)_ | 200 | Object JSON quận Ba Đình: `{"code":1,"name":"Quận Ba Đình","division_type":"quận","province_code":1}` | 200 – name = "Quận Ba Đình", province_code = 1 | Pass | Code `001` = Quận Ba Đình, Hà Nội |
| 08 | Lấy danh sách tất cả xã/phường | GET | `https://provinces.open-api.vn/api/w/` | _(trống)_ | 200 | Mảng JSON toàn bộ xã/phường/thị trấn cả nước, mỗi phần tử có `code`, `name`, `district_code` | 200 – Mảng > 10.000 phần tử | Pass | Response có thể lớn, kiểm tra timeout < 5s |
| 09 | Tìm kiếm tỉnh/thành theo tên | GET | `https://provinces.open-api.vn/api/p/search/?q=H%C3%A0+N%E1%BB%99i` | _(trống)_ | 200 | Mảng kết quả có chứa object tỉnh "Thành phố Hà Nội" | 200 – Mảng trả về ít nhất 1 phần tử, name chứa "Hà Nội" | Pass | Query string cần encode UTF-8 |
| 10 | Tìm kiếm với từ khóa không tồn tại | GET | `https://provinces.open-api.vn/api/p/search/?q=xyzabc123` | _(trống)_ | 200 | Mảng JSON rỗng `[]` – không có kết quả khớp | 200 – Body trả về `[]` | Pass | API trả 200 + mảng rỗng, **không** trả 404 |

---

## 📝 GHI CHÚ CHUNG

| Mục | Chi tiết |
|-----|----------|
| **Base URL** | `https://provinces.open-api.vn/api` |
| **Auth** | Không yêu cầu authentication |
| **Format** | Response mặc định: `application/json` |
| **Depth param** | `depth=1` (mặc định), `depth=2` (kèm cấp dưới 1 level), `depth=3` (kèm 2 cấp dưới) |
| **Tool gợi ý** | Postman · Insomnia · curl · Thunder Client (VS Code) |
| **Người test** | _(Điền tên)_ |
| **Ngày test** | _(Điền ngày)_ |
| **Version API** | v0.3.0 |