#!/bin/bash # # 组织权限测试 # 测试内容: # - admin 创建组织 # - user 不能修改他人的组织 # - admin 邀请 user 加入组织 # - 普通成员不能修改组织信息 # set -e # 加载公共库 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/lib.sh" # 测试用户 ADMIN_USER="org_admin_$TEST_TIMESTAMP" ADMIN_PASS="admin123" ADMIN_EMAIL="$ADMIN_USER@test.com" NORMAL_USER="org_member_$TEST_TIMESTAMP" NORMAL_PASS="user123" NORMAL_EMAIL="$NORMAL_USER@test.com" ORG_CODE="test_org_$TEST_TIMESTAMP" ORG_NAME="Test Organization" test_start "组织权限测试" # 检查服务 check_service # 1. 创建 admin 用户 step "1. 创建 admin 用户" ADMIN_REG=$(register_user "$ADMIN_USER" "$ADMIN_PASS" "$ADMIN_EMAIL") ADMIN_LOGIN=$(login_user "$ADMIN_USER" "$ADMIN_PASS") ADMIN_TOKEN=$(get_token "$ADMIN_LOGIN") ADMIN_ID=$(get_user_id "$ADMIN_LOGIN") info "Admin ID: $ADMIN_ID" check_success "admin 用户创建成功" # 2. 创建普通用户 step "2. 创建普通用户" USER_REG=$(register_user "$NORMAL_USER" "$NORMAL_PASS" "$NORMAL_EMAIL") USER_LOGIN=$(login_user "$NORMAL_USER" "$NORMAL_PASS") USER_TOKEN=$(get_token "$USER_LOGIN") USER_ID=$(get_user_id "$USER_LOGIN") info "User ID: $USER_ID" check_success "普通用户创建成功" # 3. admin 创建组织 step "3. admin 创建组织" ORG_RES=$(create_org "$ADMIN_TOKEN" "$ORG_CODE" "$ORG_NAME" "Test Description") echo "创建组织响应: $ORG_RES" check_http_code "$ORG_RES" "200" ORG_ID=$(echo "$ORG_RES" | jq -r '.id') info "Org ID: $ORG_ID" check_success "admin 创建组织成功" # 4. user 不能修改他人的组织 step "4. user 不能修改他人的组织 (应该返回 403)" USER_UPDATE_ORG=$(update_org "$USER_TOKEN" "$ORG_ID" '{"name": "Hacked Name"}') || true echo "user 尝试修改组织响应: $USER_UPDATE_ORG" if echo "$USER_UPDATE_ORG" | grep -q '"code":403' || echo "$USER_UPDATE_ORG" | grep -q '"code":404'; then check_success "user 不能修改他人的组织 (权限控制生效)" else error "权限控制失效" exit 1 fi # 5. admin 邀请 user 加入组织 step "5. admin 邀请 user 加入组织 (作为普通成员)" ADD_MEMBER_RES=$(add_org_member "$ADMIN_TOKEN" "$ORG_ID" "$USER_ID" "member") echo "添加成员响应: $ADD_MEMBER_RES" check_http_code "$ADD_MEMBER_RES" "200" check_success "admin 邀请 user 加入组织成功" # 6. 普通成员不能修改组织信息 step "6. 普通成员不能修改组织信息 (应该返回 403)" MEMBER_UPDATE_ORG=$(update_org "$USER_TOKEN" "$ORG_ID" '{"name": "Member Hacked"}') || true echo "普通成员尝试修改组织响应: $MEMBER_UPDATE_ORG" if echo "$MEMBER_UPDATE_ORG" | grep -q '"code":403' || echo "$MEMBER_UPDATE_ORG" | grep -q '"code":404'; then check_success "普通成员不能修改组织 (权限控制生效)" else error "权限控制失效" exit 1 fi # 7. admin 可以修改组织 step "7. admin 可以修改组织" ADMIN_UPDATE_ORG=$(update_org "$ADMIN_TOKEN" "$ORG_ID" '{"name": "Updated By Admin"}') echo "admin 修改组织响应: $ADMIN_UPDATE_ORG" check_http_code "$ADMIN_UPDATE_ORG" "200" UPDATED_NAME=$(echo "$ADMIN_UPDATE_ORG" | jq -r '.name') if [ "$UPDATED_NAME" == "Updated By Admin" ]; then check_success "admin 可以修改组织" else error "admin 修改组织失败" exit 1 fi test_end