oauth_nest_demo/test-license-system.sh

125 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "- 测试管理员接口(统计、查询、撤销等)"