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