|
|
|
|
|
# 测试脚本说明
|
|
|
|
|
|
|
|
|
|
|
|
本目录包含 VBase 的集成测试脚本,使用 bash + curl 测试 API 功能。
|
|
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
scripts/tests/
|
|
|
|
|
|
├── README.md # 本说明文件
|
|
|
|
|
|
├── lib.sh # 公共函数库
|
|
|
|
|
|
├── 01_basic_auth.sh # 基础认证测试
|
|
|
|
|
|
├── 02_user_permission.sh # 用户权限测试
|
|
|
|
|
|
├── 03_org_permission.sh # 组织权限测试
|
|
|
|
|
|
└── run_all.sh # 运行所有测试
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 前置条件
|
|
|
|
|
|
|
|
|
|
|
|
1. 服务必须已启动:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
go run cli/main.go -db.type=sqlite -db.dsn /tmp/vb.sqlite -p 4000
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. 数据库已初始化(如需要可以删除旧数据库):
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
rm /tmp/vb.sqlite
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
3. 依赖工具:
|
|
|
|
|
|
- `curl`
|
|
|
|
|
|
- `jq` (JSON 解析)
|
|
|
|
|
|
|
|
|
|
|
|
## 测试脚本说明
|
|
|
|
|
|
|
|
|
|
|
|
### lib.sh
|
|
|
|
|
|
|
|
|
|
|
|
公共函数库,包含:
|
|
|
|
|
|
|
|
|
|
|
|
- `check_success()` / `check_fail()` - 检查结果
|
|
|
|
|
|
- `check_http_code()` - 检查 HTTP 状态码
|
|
|
|
|
|
- `register_user()` - 注册用户
|
|
|
|
|
|
- `login_user()` - 登录用户
|
|
|
|
|
|
- `api_get()` / `api_post()` / `api_patch()` / `api_delete()` - API 请求封装
|
|
|
|
|
|
- `create_org()` - 创建组织
|
|
|
|
|
|
- `update_org()` - 更新组织
|
|
|
|
|
|
- `add_org_member()` - 添加组织成员
|
|
|
|
|
|
|
|
|
|
|
|
### 01_basic_auth.sh
|
|
|
|
|
|
|
|
|
|
|
|
**测试内容**:基础认证流程
|
|
|
|
|
|
|
|
|
|
|
|
- 用户注册
|
|
|
|
|
|
- 用户登录
|
|
|
|
|
|
- 获取当前用户信息
|
|
|
|
|
|
- 修改自己的用户信息
|
|
|
|
|
|
- 修改密码
|
|
|
|
|
|
- Token 刷新
|
|
|
|
|
|
- 用户登出
|
|
|
|
|
|
|
|
|
|
|
|
### 02_user_permission.sh
|
|
|
|
|
|
|
|
|
|
|
|
**测试内容**:用户级权限控制
|
|
|
|
|
|
|
|
|
|
|
|
- 第一个用户注册(自动成为 admin)
|
|
|
|
|
|
- 第二个用户注册(普通 user)
|
|
|
|
|
|
- user 可以修改自己的信息
|
|
|
|
|
|
- user **不能**修改 admin 的信息
|
|
|
|
|
|
- admin 可以修改任意用户信息
|
|
|
|
|
|
|
|
|
|
|
|
### 03_org_permission.sh
|
|
|
|
|
|
|
|
|
|
|
|
**测试内容**:组织权限控制
|
|
|
|
|
|
|
|
|
|
|
|
- admin 创建组织
|
|
|
|
|
|
- user 不能修改他人创建的组织
|
|
|
|
|
|
- admin 邀请 user 加入组织
|
|
|
|
|
|
- 普通成员不能修改组织信息
|
|
|
|
|
|
- 只有 admin/owner 可以修改组织
|
|
|
|
|
|
|
|
|
|
|
|
### run_all.sh
|
|
|
|
|
|
|
|
|
|
|
|
**功能**:运行所有测试
|
|
|
|
|
|
|
|
|
|
|
|
- 按顺序执行所有测试脚本
|
|
|
|
|
|
- 遇到错误时停止
|
|
|
|
|
|
- 输出测试摘要
|
|
|
|
|
|
- 统一时间戳避免冲突
|
|
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
|
|
|
|
|
### 运行单个测试
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 基础认证测试
|
|
|
|
|
|
cd scripts/tests
|
|
|
|
|
|
bash 01_basic_auth.sh
|
|
|
|
|
|
|
|
|
|
|
|
# 用户权限测试
|
|
|
|
|
|
bash 02_user_permission.sh
|
|
|
|
|
|
|
|
|
|
|
|
# 组织权限测试
|
|
|
|
|
|
bash 03_org_permission.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 运行所有测试
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd scripts/tests
|
|
|
|
|
|
bash run_all.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 测试环境变量
|
|
|
|
|
|
|
|
|
|
|
|
| 变量 | 默认值 | 说明 |
|
|
|
|
|
|
| ---------------- | ----------------------- | ------------------------------ |
|
|
|
|
|
|
| `BASE_URL` | `http://localhost:4000` | API 基础地址 |
|
|
|
|
|
|
| `TEST_TIMESTAMP` | 自动生成 | 测试时间戳,用于生成唯一用户名 |
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. 测试脚本会创建真实数据,建议在测试数据库上运行
|
|
|
|
|
|
2. 测试失败时会立即退出(`set -e`)
|
|
|
|
|
|
3. 每次运行使用不同的时间戳,避免用户名冲突
|