mirror of https://github.com/veypi/OneAuth.git
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.
新增 scripts/tests/ 目录,包含权限测试脚本: - lib.sh: 公共函数库(API请求、用户/组织操作封装) - 01_basic_auth.sh: 基础认证测试(注册、登录、改密、刷新token) - 02_user_permission.sh: 用户权限测试(admin/user角色、信息修改权限) - 03_org_permission.sh: 组织权限测试(创建组织、成员权限、修改权限) - run_all.sh: 运行所有测试 - README.md: 测试说明文档 删除旧的 test.sh |
1 week ago | |
|---|---|---|
| .. | ||
| 01_basic_auth.sh | 1 week ago | |
| 02_user_permission.sh | 1 week ago | |
| 03_org_permission.sh | 1 week ago | |
| README.md | 1 week ago | |
| lib.sh | 1 week ago | |
| run_all.sh | 1 week ago | |
README.md
测试脚本说明
本目录包含 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 # 运行所有测试
前置条件
-
服务必须已启动:
go run cli/main.go -db=sqlite -dsn /tmp/vb.sqlite -p 4000 -
数据库已初始化:
rm /tmp/vb.sqlite && go run cli/main.go -db=sqlite -dsn /tmp/vb.sqlite db migrate -
依赖工具:
curljq(JSON 解析)
测试脚本说明
lib.sh
公共函数库,包含:
check_success()/check_fail()- 检查结果check_http_code()- 检查 HTTP 状态码register_user()- 注册用户login_user()- 登录用户api_get()/api_post()/api_patch()/api_delete()- API 请求封装
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
功能:运行所有测试
- 按顺序执行所有测试脚本
- 遇到错误时停止
- 输出测试摘要
使用方法
运行单个测试
# 基础认证测试
cd scripts/tests
bash 01_basic_auth.sh
# 用户权限测试
bash 02_user_permission.sh
# 组织权限测试
bash 03_org_permission.sh
运行所有测试
cd scripts/tests
bash run_all.sh
测试环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
BASE_URL |
http://localhost:4000 |
API 基础地址 |
TEST_TIMESTAMP |
自动生成 | 测试时间戳,用于生成唯一用户名 |
注意事项
- 测试脚本会创建真实数据,建议在测试数据库上运行
- 测试失败时会立即退出(
set -e) - 每次运行使用不同的时间戳,避免用户名冲突