|
|
|
|
|
#!/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" || exit 1
|
|
|
|
|
|
check_success "用户注册成功"
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 用户登录
|
|
|
|
|
|
step "2. 用户登录"
|
|
|
|
|
|
LOGIN_RES=$(login_user "$TEST_USER" "$TEST_PASS")
|
|
|
|
|
|
echo "登录响应: $LOGIN_RES"
|
|
|
|
|
|
check_http_code "$LOGIN_RES" "200" || exit 1
|
|
|
|
|
|
|
|
|
|
|
|
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" || exit 1
|
|
|
|
|
|
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" || exit 1
|
|
|
|
|
|
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" || exit 1
|
|
|
|
|
|
check_success "修改密码成功"
|
|
|
|
|
|
|
|
|
|
|
|
# 6. 使用新密码登录
|
|
|
|
|
|
step "6. 使用新密码登录"
|
|
|
|
|
|
LOGIN_NEW_RES=$(login_user "$TEST_USER" "newpassword123")
|
|
|
|
|
|
check_http_code "$LOGIN_NEW_RES" "200" || exit 1
|
|
|
|
|
|
TOKEN=$(get_token "$LOGIN_NEW_RES")
|
|
|
|
|
|
check_success "新密码登录成功"
|
|
|
|
|
|
|
|
|
|
|
|
# 7. Token 刷新
|
|
|
|
|
|
step "7. Token 刷新"
|
|
|
|
|
|
REFRESH_TOKEN=$(get_refresh_token "$LOGIN_NEW_RES")
|
|
|
|
|
|
REFRESH_RES=$(api_post "/api/auth/refresh" "{\"refresh_token\": \"$REFRESH_TOKEN\"}" "" )
|
|
|
|
|
|
echo "刷新响应: $REFRESH_RES"
|
|
|
|
|
|
check_http_code "$REFRESH_RES" "200" || exit 1
|
|
|
|
|
|
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" || exit 1
|
|
|
|
|
|
check_success "用户登出成功"
|
|
|
|
|
|
|
|
|
|
|
|
test_end
|