Files
chinese-family-tree-2/simple-test.sh
T
freedakgmail e92884ae53 0.0.1.0
2025-11-23 03:07:39 +08:00

114 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
echo "🧪 华夏谱 API 全面测试"
echo "======================"
echo ""
BASE_URL="http://localhost:3000"
# 测试计数
PASS=0
FAIL=0
# 测试函数
test_api() {
local name=$1
local method=$2
local url=$3
local data=$4
local expected_status=$5
echo "测试: $name"
echo "请求: $method $url"
if [ -z "$data" ]; then
response=$(curl -s -w "\n%{http_code}" -X $method "$BASE_URL$url")
else
response=$(curl -s -w "\n%{http_code}" -X $method "$BASE_URL$url" \
-H "Content-Type: application/json" \
-d "$data")
fi
status=$(echo "$response" | tail -n1)
body=$(echo "$response" | head -n-1)
echo "状态码: $status"
echo "响应: $body"
if [ "$status" = "$expected_status" ]; then
echo "✅ 通过"
((PASS++))
else
echo "❌ 失败 (期望: $expected_status, 实际: $status)"
((FAIL++))
fi
echo ""
}
echo "=== 1. 认证 API 测试 ==="
echo ""
# 1.1 注册新用户
TIMESTAMP=$(date +%s)
TEST_EMAIL="test-$TIMESTAMP@example.com"
test_api "用户注册" "POST" "/api/auth/register" \
"{\"email\":\"$TEST_EMAIL\",\"password\":\"password123\",\"name\":\"测试用户\"}" \
"200"
# 1.2 重复注册(应该失败)
test_api "重复注册" "POST" "/api/auth/register" \
"{\"email\":\"$TEST_EMAIL\",\"password\":\"password123\",\"name\":\"测试用户\"}" \
"400"
# 1.3 登录
test_api "用户登录" "POST" "/api/auth/signin" \
"{\"email\":\"$TEST_EMAIL\",\"password\":\"password123\"}" \
"302"
echo "=== 2. 权限验证测试 ==="
echo ""
# 2.1 未登录访问家族树列表
test_api "未登录获取家族树" "GET" "/api/trees" "" "401"
# 2.2 未登录创建家族树
test_api "未登录创建家族树" "POST" "/api/trees" \
"{\"name\":\"测试树\",\"description\":\"测试\"}" \
"401"
# 2.3 未登录获取成员
test_api "未登录获取成员" "GET" "/api/trees/test-id/members" "" "401"
# 2.4 未登录创建成员
test_api "未登录创建成员" "POST" "/api/trees/test-id/members" \
"{\"surname\":\"李\",\"givenName\":\"明\",\"fullName\":\"李明\",\"gender\":\"MALE\",\"generation\":1}" \
"401"
echo "=== 3. 数据验证测试 ==="
echo ""
# 3.1 注册时缺少必填字段
test_api "注册缺少邮箱" "POST" "/api/auth/register" \
"{\"password\":\"password123\",\"name\":\"测试\"}" \
"400"
# 3.2 注册时密码太短
test_api "密码太短" "POST" "/api/auth/register" \
"{\"email\":\"short@test.com\",\"password\":\"123\",\"name\":\"测试\"}" \
"400"
echo "=== 测试总结 ==="
echo ""
echo "总计: $((PASS + FAIL)) 个测试"
echo "✅ 通过: $PASS"
echo "❌ 失败: $FAIL"
echo ""
if [ $FAIL -eq 0 ]; then
echo "🎉 所有测试通过!"
exit 0
else
echo "⚠️ 有 $FAIL 个测试失败"
exit 1
fi