125 lines
3.5 KiB
Bash
Executable File
125 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 卡密系统测试脚本
|
||
# 使用方法: bash test-license-system.sh
|
||
|
||
BASE_URL="http://localhost:3030"
|
||
ADMIN_TOKEN=""
|
||
USER_TOKEN=""
|
||
LICENSE_CODE=""
|
||
|
||
echo "====== 卡密系统测试 ======"
|
||
echo ""
|
||
|
||
# 颜色定义
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 测试函数
|
||
test_api() {
|
||
local name=$1
|
||
local method=$2
|
||
local endpoint=$3
|
||
local data=$4
|
||
local token=$5
|
||
|
||
echo -e "${YELLOW}测试: ${name}${NC}"
|
||
|
||
if [ -n "$token" ]; then
|
||
if [ -n "$data" ]; then
|
||
response=$(curl -s -X $method "$BASE_URL$endpoint" \
|
||
-H "Authorization: Bearer $token" \
|
||
-H "Content-Type: application/json" \
|
||
-d "$data")
|
||
else
|
||
response=$(curl -s -X $method "$BASE_URL$endpoint" \
|
||
-H "Authorization: Bearer $token")
|
||
fi
|
||
else
|
||
if [ -n "$data" ]; then
|
||
response=$(curl -s -X $METHOD "$BASE_URL$endpoint" \
|
||
-H "Content-Type: application/json" \
|
||
-d "$data")
|
||
else
|
||
response=$(curl -s -X $method "$BASE_URL$endpoint")
|
||
fi
|
||
fi
|
||
|
||
echo "$response" | jq '.'
|
||
echo ""
|
||
}
|
||
|
||
# 1. 注册测试用户
|
||
echo -e "${GREEN}步骤 1: 注册测试用户${NC}"
|
||
REGISTER_RESPONSE=$(curl -s -X POST "$BASE_URL/user/register" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"username": "testuser_'$(date +%s)'",
|
||
"password": "password123",
|
||
"email": "test'$(date +%s)'@example.com"
|
||
}')
|
||
|
||
USER_TOKEN=$(echo $REGISTER_RESPONSE | jq -r '.access_token')
|
||
echo "用户Token: $USER_TOKEN"
|
||
echo ""
|
||
|
||
# 2. 测试未授权时访问任务接口(应该返回403)
|
||
echo -e "${GREEN}步骤 2: 测试未授权访问任务接口 (预期 403)${NC}"
|
||
test_api "创建任务 (无授权)" "POST" "/task" '{
|
||
"title": "测试任务",
|
||
"description": "这应该失败"
|
||
}' "$USER_TOKEN"
|
||
|
||
# 3. 生成测试卡密(需要管理员权限,这里模拟)
|
||
echo -e "${GREEN}步骤 3: 生成测试卡密${NC}"
|
||
echo -e "${RED}注意: 此步骤需要管理员权限,请手动生成卡密或直接从数据库插入${NC}"
|
||
echo "示例 API 调用:"
|
||
echo 'POST /license/generate'
|
||
echo '{
|
||
"type": "monthly",
|
||
"validDays": 30,
|
||
"count": 1
|
||
}'
|
||
echo ""
|
||
|
||
# 提示用户输入卡密
|
||
read -p "请输入生成的卡密码 (格式: XXXX-XXXX-XXXX-XXXX): " LICENSE_CODE
|
||
echo ""
|
||
|
||
# 4. 激活卡密
|
||
echo -e "${GREEN}步骤 4: 激活卡密${NC}"
|
||
test_api "激活卡密" "POST" "/license/activate" "{
|
||
\"code\": \"$LICENSE_CODE\"
|
||
}" "$USER_TOKEN"
|
||
|
||
# 5. 查询授权信息
|
||
echo -e "${GREEN}步骤 5: 查询我的授权信息${NC}"
|
||
test_api "查询授权" "GET" "/license/my" "" "$USER_TOKEN"
|
||
|
||
# 6. 测试授权后访问任务接口
|
||
echo -e "${GREEN}步骤 6: 测试授权后访问任务接口 (应该成功)${NC}"
|
||
test_api "创建任务 (有授权)" "POST" "/task" '{
|
||
"title": "测试任务",
|
||
"description": "这应该成功",
|
||
"priority": "high"
|
||
}' "$USER_TOKEN"
|
||
|
||
# 7. 获取任务列表
|
||
echo -e "${GREEN}步骤 7: 获取任务列表${NC}"
|
||
test_api "获取任务列表" "GET" "/task" "" "$USER_TOKEN"
|
||
|
||
echo -e "${GREEN}====== 测试完成 ======${NC}"
|
||
echo ""
|
||
echo "测试总结:"
|
||
echo "1. 用户注册成功"
|
||
echo "2. 未授权时无法访问任务功能 (403)"
|
||
echo "3. 卡密激活成功"
|
||
echo "4. 授权后可以正常使用任务功能"
|
||
echo ""
|
||
echo "后续测试建议:"
|
||
echo "- 测试卡密延期功能(激活第二个卡密)"
|
||
echo "- 测试卡密过期后的访问"
|
||
echo "- 测试管理员接口(统计、查询、撤销等)"
|