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

3.0 KiB

测试脚本说明

本目录包含 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. 服务必须已启动:

    rm /tmp/vb.sqlite && go run cli/main.go -db.type=sqlite -db.dsn /tmp/vb.sqlite -p 4000
    
  2. 手动查询后端接口列表

    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,确保跨脚本的用户数据一致性

使用方法

运行所有测试 (推荐)

cd scripts/tests
bash run_all.sh

运行单个测试

# 必须先设置时间戳以避免冲突 (可选)
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,手动运行单个脚本时建议手动设置,否则每次运行都会生成新用户。