#!/bin/bash # # 基础认证测试 # 测试内容:注册、登录、修改信息、改密码、刷新token、登出 # set -e # 加载公共库 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/lib.sh" # 测试配置 TEST_USER="basic_user_$TEST_TIMESTAMP" TEST_PASS="password123" TEST_EMAIL="$TEST_USER@test.com" test_start "基础认证测试" # 检查服务 check_service # 1. 用户注册 step "1. 用户注册" REGISTER_RES=$(register_user "$TEST_USER" "$TEST_PASS" "$TEST_EMAIL") echo "注册响应: $REGISTER_RES" check_http_code "$REGISTER_RES" "200" check_success "用户注册成功" # 2. 用户登录 step "2. 用户登录" LOGIN_RES=$(login_user "$TEST_USER" "$TEST_PASS") echo "登录响应: $LOGIN_RES" check_http_code "$LOGIN_RES" "200" TOKEN=$(get_token "$LOGIN_RES") USER_ID=$(get_user_id "$LOGIN_RES") info "Token: ${TOKEN:0:20}..." info "User ID: $USER_ID" check_success "用户登录成功" # 3. 获取当前用户信息 step "3. 获取当前用户信息" ME_RES=$(api_get "/api/auth/me" "$TOKEN") echo "用户信息: $ME_RES" check_http_code "$ME_RES" "200" check_success "获取用户信息成功" # 4. 修改自己的信息 step "4. 修改自己的信息" UPDATE_RES=$(api_patch "/api/users/$USER_ID" '{"nickname": "Updated Nickname"}' "$TOKEN") echo "更新响应: $UPDATE_RES" check_http_code "$UPDATE_RES" "200" NICKNAME=$(echo "$UPDATE_RES" | jq -r '.nickname') if [ "$NICKNAME" == "Updated Nickname" ]; then check_success "修改用户信息成功" else error "修改用户信息失败" exit 1 fi # 5. 修改密码 step "5. 修改密码" CHANGE_PW_RES=$(api_post "/api/auth/me/change-password" \ "{\"old_password\": \"$TEST_PASS\", \"new_password\": \"newpassword123\"}" \ "$TOKEN") echo "改密码响应: $CHANGE_PW_RES" check_http_code "$CHANGE_PW_RES" "200" check_success "修改密码成功" # 6. 使用新密码登录 step "6. 使用新密码登录" LOGIN_NEW_RES=$(login_user "$TEST_USER" "newpassword123") check_http_code "$LOGIN_NEW_RES" "200" TOKEN=$(get_token "$LOGIN_NEW_RES") check_success "新密码登录成功" # 7. Token 刷新 step "7. Token 刷新" REFRESH_RES=$(api_post "/api/auth/refresh" "{}" "$TOKEN") echo "刷新响应: $REFRESH_RES" check_http_code "$REFRESH_RES" "200" NEW_TOKEN=$(echo "$REFRESH_RES" | jq -r '.access_token') if [ -n "$NEW_TOKEN" ] && [ "$NEW_TOKEN" != "null" ]; then TOKEN="$NEW_TOKEN" check_success "Token 刷新成功" else error "Token 刷新失败" exit 1 fi # 8. 用户登出 step "8. 用户登出" LOGOUT_RES=$(api_post "/api/auth/logout" "{}" "$TOKEN") echo "登出响应: $LOGOUT_RES" check_http_code "$LOGOUT_RES" "200" check_success "用户登出成功" test_end