102 lines
3.7 KiB
Bash
Executable File
102 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "🔐 测试修改密码功能"
|
|
echo "===================="
|
|
echo ""
|
|
|
|
BASE_URL="http://localhost:3000"
|
|
|
|
# 1. 注册测试用户
|
|
TIMESTAMP=$(date +%s)
|
|
TEST_EMAIL="password-test-$TIMESTAMP@example.com"
|
|
TEST_PASSWORD="oldpassword123"
|
|
NEW_PASSWORD="newpassword123"
|
|
|
|
echo "1️⃣ 注册测试用户: $TEST_EMAIL"
|
|
REGISTER_RESPONSE=$(curl -s -X POST "$BASE_URL/api/auth/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"email\":\"$TEST_EMAIL\",\"password\":\"$TEST_PASSWORD\",\"name\":\"密码测试用户\"}")
|
|
|
|
echo "注册响应: $REGISTER_RESPONSE"
|
|
echo ""
|
|
|
|
# 2. 获取 CSRF token
|
|
echo "2️⃣ 获取 CSRF token..."
|
|
CSRF_RESPONSE=$(curl -s -c cookies.txt -b cookies.txt "$BASE_URL/api/auth/csrf")
|
|
CSRF_TOKEN=$(echo $CSRF_RESPONSE | grep -o '"csrfToken":"[^"]*"' | cut -d'"' -f4)
|
|
echo "CSRF Token: $CSRF_TOKEN"
|
|
echo ""
|
|
|
|
# 3. 登录
|
|
echo "3️⃣ 登录..."
|
|
LOGIN_RESPONSE=$(curl -s -c cookies.txt -b cookies.txt -X POST "$BASE_URL/api/auth/callback/credentials" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"email\":\"$TEST_EMAIL\",\"password\":\"$TEST_PASSWORD\",\"csrfToken\":\"$CSRF_TOKEN\",\"callbackUrl\":\"$BASE_URL\",\"json\":true}")
|
|
|
|
echo "登录成功"
|
|
echo ""
|
|
|
|
# 4. 测试修改密码(错误的当前密码)
|
|
echo "4️⃣ 测试错误的当前密码..."
|
|
WRONG_PASSWORD_RESPONSE=$(curl -s -b cookies.txt -X POST "$BASE_URL/api/user/change-password" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"currentPassword\":\"wrongpassword\",\"newPassword\":\"$NEW_PASSWORD\",\"confirmPassword\":\"$NEW_PASSWORD\"}")
|
|
|
|
echo "响应: $WRONG_PASSWORD_RESPONSE"
|
|
echo ""
|
|
|
|
# 5. 测试修改密码(密码不一致)
|
|
echo "5️⃣ 测试密码不一致..."
|
|
MISMATCH_RESPONSE=$(curl -s -b cookies.txt -X POST "$BASE_URL/api/user/change-password" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"currentPassword\":\"$TEST_PASSWORD\",\"newPassword\":\"$NEW_PASSWORD\",\"confirmPassword\":\"different123\"}")
|
|
|
|
echo "响应: $MISMATCH_RESPONSE"
|
|
echo ""
|
|
|
|
# 6. 测试修改密码(成功)
|
|
echo "6️⃣ 正确修改密码..."
|
|
SUCCESS_RESPONSE=$(curl -s -b cookies.txt -X POST "$BASE_URL/api/user/change-password" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"currentPassword\":\"$TEST_PASSWORD\",\"newPassword\":\"$NEW_PASSWORD\",\"confirmPassword\":\"$NEW_PASSWORD\"}")
|
|
|
|
echo "响应: $SUCCESS_RESPONSE"
|
|
echo ""
|
|
|
|
# 7. 验证新密码可以登录
|
|
echo "7️⃣ 验证新密码登录..."
|
|
rm -f cookies.txt
|
|
|
|
# 重新获取 CSRF token
|
|
CSRF_RESPONSE=$(curl -s -c cookies.txt -b cookies.txt "$BASE_URL/api/auth/csrf")
|
|
CSRF_TOKEN=$(echo $CSRF_RESPONSE | grep -o '"csrfToken":"[^"]*"' | cut -d'"' -f4)
|
|
|
|
# 使用新密码登录
|
|
NEW_LOGIN_RESPONSE=$(curl -s -c cookies.txt -b cookies.txt -X POST "$BASE_URL/api/auth/callback/credentials" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"email\":\"$TEST_EMAIL\",\"password\":\"$NEW_PASSWORD\",\"csrfToken\":\"$CSRF_TOKEN\",\"callbackUrl\":\"$BASE_URL\",\"json\":true}")
|
|
|
|
echo "使用新密码登录成功"
|
|
echo ""
|
|
|
|
# 8. 验证旧密码无法登录
|
|
echo "8️⃣ 验证旧密码无法登录..."
|
|
rm -f cookies.txt
|
|
|
|
# 重新获取 CSRF token
|
|
CSRF_RESPONSE=$(curl -s -c cookies.txt -b cookies.txt "$BASE_URL/api/auth/csrf")
|
|
CSRF_TOKEN=$(echo $CSRF_RESPONSE | grep -o '"csrfToken":"[^"]*"' | cut -d'"' -f4)
|
|
|
|
# 使用旧密码登录(应该失败)
|
|
OLD_LOGIN_RESPONSE=$(curl -s -w "\n%{http_code}" -c cookies.txt -b cookies.txt -X POST "$BASE_URL/api/auth/callback/credentials" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"email\":\"$TEST_EMAIL\",\"password\":\"$TEST_PASSWORD\",\"csrfToken\":\"$CSRF_TOKEN\",\"callbackUrl\":\"$BASE_URL\",\"json\":true}")
|
|
|
|
echo "旧密码登录响应: $OLD_LOGIN_RESPONSE"
|
|
echo ""
|
|
|
|
# 清理
|
|
rm -f cookies.txt
|
|
|
|
echo "✅ 修改密码功能测试完成!"
|