114 lines
2.8 KiB
Bash
Executable File
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
|