You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/scripts/tests/README.md

126 lines
2.8 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 测试脚本说明
本目录包含 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. 每次运行使用不同的时间戳,避免用户名冲突