# 测试脚本说明 本目录包含 VBase 的集成测试脚本,使用 bash + curl 测试 API 功能。 ## 目录结构 ``` scripts/tests/ ├── README.md # 本说明文件 ├── lib.sh # 公共函数库 ├── 00_none_auth.sh # 未登录访问测试 ├── 01_setup_users.sh # 用户初始化与基础认证 ├── 02_resource_perm.sh # 资源权限交叉测试 ├── 03_org_permission.sh # 组织权限测试 └── run_all.sh # 运行所有测试 ``` ## 前置条件 1. 服务必须已启动: ```bash rm /tmp/vb.sqlite && go run cli/main.go -db.type=sqlite -db.dsn /tmp/vb.sqlite -p 4000 ``` 2. 手动查询后端接口列表 ```bash curl -sSf http://localhost:4000/_api.json ``` ## 测试脚本说明 ### 00_none_auth.sh **测试内容**:未登录状态下访问受保护接口 - 验证 API 是否正确拦截未携带 Token 的请求 - 覆盖 Users, Orgs, Roles, Settings 等核心模块 ### 01_setup_users.sh **测试内容**:用户初始化与基础功能验证 - 注册三个核心账户:Admin, User1, User2 - 验证注册与登录流程 - 使用临时账户验证: - 修改个人信息 - 修改密码(验证旧密码失效、新密码生效) - Token 刷新 - 用户登出 ### 02_resource_perm.sh **测试内容**:跨用户资源访问权限验证 - 场景 1: Admin 修改任意用户信息 (允许) - 场景 2: User1 修改自己信息 (允许) - 场景 3: User1 修改 User2 信息 (禁止) - 场景 4: User1 修改 Admin 信息 (禁止) - 场景 5: User2 修改 User1 信息 (禁止) ### 03_org_permission.sh **测试内容**:组织权限控制 - admin 创建组织 - user 不能修改他人创建的组织 - admin 邀请 user 加入组织 - 普通成员不能修改组织信息 - 只有 admin/owner 可以修改组织 ### run_all.sh **功能**:运行所有测试 - 按顺序执行所有测试脚本 - 遇到错误时停止 - 输出测试摘要 - 统一时间戳 `TEST_TIMESTAMP`,确保跨脚本的用户数据一致性 ## 使用方法 ### 运行所有测试 (推荐) ```bash cd scripts/tests bash run_all.sh ``` ### 运行单个测试 ```bash # 必须先设置时间戳以避免冲突 (可选) export TEST_TIMESTAMP=$(date +%s) # 运行特定测试 bash 00_none_auth.sh bash 01_setup_users.sh bash 02_resource_perm.sh ``` ## 测试环境变量 | 变量 | 默认值 | 说明 | | ---------------- | ----------------------- | ------------------------------ | | `BASE_URL` | `http://localhost:4000` | API 基础地址 | | `TEST_TIMESTAMP` | 自动生成 | 测试时间戳,用于生成唯一用户名 | ## 注意事项 1. 测试脚本会创建真实数据,建议在测试数据库上运行 2. 测试失败时会立即退出(`set -e`) 3. `run_all.sh` 会自动导出 `TEST_TIMESTAMP`,手动运行单个脚本时建议手动设置,否则每次运行都会生成新用户。