180 lines
5.3 KiB
Bash
180 lines
5.3 KiB
Bash
#!/bin/bash
|
|
# 快速测试脚本 - 在本地环境快速验证核心功能
|
|
|
|
set -e
|
|
|
|
echo "🚀 开始快速测试..."
|
|
echo ""
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
BASE_URL="http://localhost:3000/api/v1"
|
|
|
|
# 测试结果统计
|
|
PASS=0
|
|
FAIL=0
|
|
|
|
# 测试函数
|
|
test_api() {
|
|
local test_name=$1
|
|
local method=$2
|
|
local endpoint=$3
|
|
local data=$4
|
|
local expected_status=$5
|
|
local token=$6
|
|
|
|
echo -n "Testing: $test_name ... "
|
|
|
|
if [ -n "$token" ]; then
|
|
response=$(curl -s -w "\n%{http_code}" -X $method "$BASE_URL$endpoint" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer $token" \
|
|
-d "$data")
|
|
else
|
|
response=$(curl -s -w "\n%{http_code}" -X $method "$BASE_URL$endpoint" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$data")
|
|
fi
|
|
|
|
status=$(echo "$response" | tail -n1)
|
|
body=$(echo "$response" | head -n-1)
|
|
|
|
if [ "$status" -eq "$expected_status" ]; then
|
|
echo -e "${GREEN}✓ PASS${NC}"
|
|
PASS=$((PASS + 1))
|
|
echo "$body"
|
|
else
|
|
echo -e "${RED}✗ FAIL${NC} (Expected: $expected_status, Got: $status)"
|
|
FAIL=$((FAIL + 1))
|
|
echo "$body"
|
|
fi
|
|
echo ""
|
|
}
|
|
|
|
# 生成随机设备 ID
|
|
DEVICE_ID="test-device-$(date +%s)"
|
|
|
|
# 1. 测试账户创建
|
|
echo -e "${YELLOW}=== 1. 账户创建 ===${NC}"
|
|
CREATE_RESPONSE=$(curl -s -X POST "$BASE_URL/user/auto-create" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"deviceId\": \"$DEVICE_ID\",
|
|
\"deviceName\": \"Test Device\",
|
|
\"provinceCode\": \"110000\",
|
|
\"cityCode\": \"110100\"
|
|
}")
|
|
|
|
echo "$CREATE_RESPONSE" | jq '.'
|
|
|
|
# 提取关键信息
|
|
ACCESS_TOKEN=$(echo "$CREATE_RESPONSE" | jq -r '.data.accessToken')
|
|
REFRESH_TOKEN=$(echo "$CREATE_RESPONSE" | jq -r '.data.refreshToken')
|
|
ACCOUNT_SEQUENCE=$(echo "$CREATE_RESPONSE" | jq -r '.data.accountSequence')
|
|
MNEMONIC=$(echo "$CREATE_RESPONSE" | jq -r '.data.mnemonic')
|
|
REFERRAL_CODE=$(echo "$CREATE_RESPONSE" | jq -r '.data.referralCode')
|
|
|
|
if [ "$ACCESS_TOKEN" != "null" ]; then
|
|
echo -e "${GREEN}✓ 账户创建成功${NC}"
|
|
echo "Account Sequence: $ACCOUNT_SEQUENCE"
|
|
echo "Referral Code: $REFERRAL_CODE"
|
|
PASS=$((PASS + 1))
|
|
else
|
|
echo -e "${RED}✗ 账户创建失败${NC}"
|
|
FAIL=$((FAIL + 1))
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 2. 测试获取个人资料
|
|
echo -e "${YELLOW}=== 2. 获取个人资料 ===${NC}"
|
|
test_api "获取个人资料" "GET" "/user/my-profile" "" 200 "$ACCESS_TOKEN"
|
|
|
|
# 3. 测试更新个人资料
|
|
echo -e "${YELLOW}=== 3. 更新个人资料 ===${NC}"
|
|
test_api "更新个人资料" "PUT" "/user/update-profile" \
|
|
"{\"nickname\": \"测试用户\", \"address\": \"测试地址\"}" \
|
|
200 "$ACCESS_TOKEN"
|
|
|
|
# 4. 测试获取设备列表
|
|
echo -e "${YELLOW}=== 4. 获取设备列表 ===${NC}"
|
|
test_api "获取设备列表" "GET" "/user/my-devices" "" 200 "$ACCESS_TOKEN"
|
|
|
|
# 5. 测试 Token 刷新
|
|
echo -e "${YELLOW}=== 5. Token 刷新 ===${NC}"
|
|
REFRESH_RESPONSE=$(curl -s -X POST "$BASE_URL/user/auto-login" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"refreshToken\": \"$REFRESH_TOKEN\",
|
|
\"deviceId\": \"$DEVICE_ID\"
|
|
}")
|
|
|
|
NEW_ACCESS_TOKEN=$(echo "$REFRESH_RESPONSE" | jq -r '.data.accessToken')
|
|
if [ "$NEW_ACCESS_TOKEN" != "null" ] && [ "$NEW_ACCESS_TOKEN" != "$ACCESS_TOKEN" ]; then
|
|
echo -e "${GREEN}✓ Token 刷新成功${NC}"
|
|
PASS=$((PASS + 1))
|
|
else
|
|
echo -e "${RED}✗ Token 刷新失败${NC}"
|
|
FAIL=$((FAIL + 1))
|
|
fi
|
|
echo ""
|
|
|
|
# 6. 测试助记词恢复
|
|
echo -e "${YELLOW}=== 6. 助记词恢复 ===${NC}"
|
|
NEW_DEVICE_ID="test-device-recovery-$(date +%s)"
|
|
test_api "助记词恢复" "POST" "/user/recover-by-mnemonic" \
|
|
"{
|
|
\"accountSequence\": $ACCOUNT_SEQUENCE,
|
|
\"mnemonic\": \"$MNEMONIC\",
|
|
\"newDeviceId\": \"$NEW_DEVICE_ID\",
|
|
\"deviceName\": \"Recovered Device\"
|
|
}" \
|
|
201 ""
|
|
|
|
# 7. 测试推荐码查询
|
|
echo -e "${YELLOW}=== 7. 推荐码查询 ===${NC}"
|
|
test_api "推荐码查询" "GET" "/user/by-referral-code/$REFERRAL_CODE" "" 200 ""
|
|
|
|
# 8. 测试 KYC 提交
|
|
echo -e "${YELLOW}=== 8. KYC 提交 ===${NC}"
|
|
test_api "KYC 提交" "POST" "/user/submit-kyc" \
|
|
"{
|
|
\"realName\": \"张三\",
|
|
\"idCardNumber\": \"110101199001011234\",
|
|
\"idCardFrontUrl\": \"https://example.com/front.jpg\",
|
|
\"idCardBackUrl\": \"https://example.com/back.jpg\"
|
|
}" \
|
|
201 "$ACCESS_TOKEN"
|
|
|
|
# 9. 测试错误场景
|
|
echo -e "${YELLOW}=== 9. 错误场景测试 ===${NC}"
|
|
test_api "无效 Token" "GET" "/user/my-profile" "" 401 "invalid-token"
|
|
test_api "错误的助记词" "POST" "/user/recover-by-mnemonic" \
|
|
"{
|
|
\"accountSequence\": $ACCOUNT_SEQUENCE,
|
|
\"mnemonic\": \"wrong wrong wrong wrong wrong wrong wrong wrong wrong wrong wrong wrong\",
|
|
\"newDeviceId\": \"wrong-device\",
|
|
\"deviceName\": \"Wrong Device\"
|
|
}" \
|
|
400 ""
|
|
|
|
# 总结
|
|
echo ""
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
echo -e "${YELLOW}测试完成!${NC}"
|
|
echo -e "${GREEN}通过: $PASS${NC}"
|
|
echo -e "${RED}失败: $FAIL${NC}"
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
|
|
if [ $FAIL -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 所有测试通过!${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}✗ 存在失败的测试!${NC}"
|
|
exit 1
|
|
fi
|