201 lines
7.2 KiB
Bash
201 lines
7.2 KiB
Bash
#!/bin/bash
|
||
|
||
# 灵猴社博客系统 API 测试脚本
|
||
# 使用curl测试各种API端点
|
||
|
||
BASE_URL="http://localhost:8080"
|
||
TEST_USER_EMAIL="test@example.com"
|
||
TEST_USER_PASSWORD="password123"
|
||
TEST_USERNAME="testuser"
|
||
|
||
echo "🚀 开始测试 PBlog API..."
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 测试健康检查
|
||
echo -e "\n📊 测试健康检查..."
|
||
HEALTH_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $BASE_URL/health)
|
||
if [ "$HEALTH_RESPONSE" -eq 200 ]; then
|
||
echo -e "${GREEN}✅ 健康检查通过${NC}"
|
||
else
|
||
echo -e "${RED}❌ 健康检查失败,状态码: $HEALTH_RESPONSE${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 测试用户注册
|
||
echo -e "\n👤 测试用户注册..."
|
||
REGISTER_RESPONSE=$(curl -s -X POST $BASE_URL/api/auth/register \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"username\":\"$TEST_USERNAME\",\"email\":\"$TEST_USER_EMAIL\",\"password\":\"$TEST_USER_PASSWORD\"}")
|
||
|
||
if echo "$REGISTER_RESPONSE" | grep -q "token"; then
|
||
echo -e "${GREEN}✅ 用户注册成功${NC}"
|
||
TOKEN=$(echo "$REGISTER_RESPONSE" | grep -o '"token":"[^"]*' | cut -d'"' -f4)
|
||
else
|
||
echo -e "${YELLOW}⚠️ 用户可能已存在,尝试登录...${NC}"
|
||
fi
|
||
|
||
# 测试用户登录
|
||
echo -e "\n🔐 测试用户登录..."
|
||
LOGIN_RESPONSE=$(curl -s -X POST $BASE_URL/api/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"email\":\"$TEST_USER_EMAIL\",\"password\":\"$TEST_USER_PASSWORD\"}")
|
||
|
||
if echo "$LOGIN_RESPONSE" | grep -q "token"; then
|
||
echo -e "${GREEN}✅ 用户登录成功${NC}"
|
||
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*' | cut -d'"' -f4)
|
||
else
|
||
echo -e "${RED}❌ 用户登录失败${NC}"
|
||
echo "响应: $LOGIN_RESPONSE"
|
||
exit 1
|
||
fi
|
||
|
||
# 测试获取用户资料
|
||
echo -e "\n👤 测试获取用户资料..."
|
||
PROFILE_RESPONSE=$(curl -s -w "%{http_code}" -X GET $BASE_URL/api/profile \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
|
||
if echo "$PROFILE_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取用户资料成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 获取用户资料失败${NC}"
|
||
fi
|
||
|
||
# 测试创建文章
|
||
echo -e "\n📝 测试创建文章..."
|
||
ARTICLE_DATA='{
|
||
"title": "测试文章",
|
||
"markdown_content": "# 测试文章\n\n这是一篇测试文章的内容。\n\n## 功能测试\n\n- 支持Markdown\n- 支持代码高亮\n- 支持表格\n\n```go\nfunc main() {\n fmt.Println(\"Hello, PBlog!\")\n}\n```",
|
||
"status": "published",
|
||
"tags": ["测试", "Go", "博客"]
|
||
}'
|
||
|
||
ARTICLE_RESPONSE=$(curl -s -X POST $BASE_URL/api/articles \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d "$ARTICLE_DATA")
|
||
|
||
if echo "$ARTICLE_RESPONSE" | grep -q "\"id\""; then
|
||
echo -e "${GREEN}✅ 文章创建成功${NC}"
|
||
ARTICLE_ID=$(echo "$ARTICLE_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
|
||
ARTICLE_SLUG=$(echo "$ARTICLE_RESPONSE" | grep -o '"slug":"[^"]*' | cut -d'"' -f4)
|
||
echo "文章ID: $ARTICLE_ID"
|
||
echo "文章Slug: $ARTICLE_SLUG"
|
||
else
|
||
echo -e "${RED}❌ 文章创建失败${NC}"
|
||
echo "响应: $ARTICLE_RESPONSE"
|
||
fi
|
||
|
||
# 测试获取文章列表
|
||
echo -e "\n📋 测试获取文章列表..."
|
||
ARTICLES_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/articles)
|
||
if echo "$ARTICLES_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取文章列表成功${NC}"
|
||
# 提取文章数量
|
||
ARTICLE_COUNT=$(echo "$ARTICLES_RESPONSE" | grep -o '"total":[0-9]*' | cut -d':' -f2)
|
||
echo "文章总数: $ARTICLE_COUNT"
|
||
else
|
||
echo -e "${RED}❌ 获取文章列表失败${NC}"
|
||
fi
|
||
|
||
# 测试获取单个文章
|
||
if [ ! -z "$ARTICLE_SLUG" ]; then
|
||
echo -e "\n📄 测试获取单个文章..."
|
||
SINGLE_ARTICLE_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/articles/$ARTICLE_SLUG)
|
||
if echo "$SINGLE_ARTICLE_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取单个文章成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 获取单个文章失败${NC}"
|
||
fi
|
||
fi
|
||
|
||
# 测试创建评论
|
||
if [ ! -z "$ARTICLE_ID" ]; then
|
||
echo -e "\n💬 测试创建评论..."
|
||
COMMENT_DATA='{
|
||
"markdown_content": "这是一条测试评论。\n\n**感谢分享!**"
|
||
}'
|
||
|
||
COMMENT_RESPONSE=$(curl -s -X POST $BASE_URL/api/comments/article/$ARTICLE_ID \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-d "$COMMENT_DATA")
|
||
|
||
if echo "$COMMENT_RESPONSE" | grep -q "\"id\""; then
|
||
echo -e "${GREEN}✅ 评论创建成功${NC}"
|
||
COMMENT_ID=$(echo "$COMMENT_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
|
||
echo "评论ID: $COMMENT_ID"
|
||
else
|
||
echo -e "${RED}❌ 评论创建失败${NC}"
|
||
echo "响应: $COMMENT_RESPONSE"
|
||
fi
|
||
|
||
# 测试获取评论列表
|
||
echo -e "\n📋 测试获取评论列表..."
|
||
COMMENTS_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/comments/article/$ARTICLE_ID)
|
||
if echo "$COMMENTS_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取评论列表成功${NC}"
|
||
COMMENT_COUNT=$(echo "$COMMENTS_RESPONSE" | grep -o '"total":[0-9]*' | cut -d':' -f2)
|
||
echo "评论总数: $COMMENT_COUNT"
|
||
else
|
||
echo -e "${RED}❌ 获取评论列表失败${NC}"
|
||
fi
|
||
fi
|
||
|
||
# 测试获取媒体列表
|
||
echo -e "\n📁 测试获取媒体列表..."
|
||
MEDIA_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/media \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
if echo "$MEDIA_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取媒体列表成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 获取媒体列表失败${NC}"
|
||
fi
|
||
|
||
# 测试管理员功能(如果是管理员用户)
|
||
echo -e "\n🔐 测试管理员登录..."
|
||
ADMIN_LOGIN_RESPONSE=$(curl -s -X POST $BASE_URL/api/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"email":"admin@example.com","password":"admin123"}')
|
||
|
||
if echo "$ADMIN_LOGIN_RESPONSE" | grep -q "token"; then
|
||
echo -e "${GREEN}✅ 管理员登录成功${NC}"
|
||
ADMIN_TOKEN=$(echo "$ADMIN_LOGIN_RESPONSE" | grep -o '"token":"[^"]*' | cut -d'"' -f4)
|
||
|
||
# 测试获取系统统计
|
||
echo -e "\n📊 测试获取系统统计..."
|
||
STATS_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/admin/stats \
|
||
-H "Authorization: Bearer $ADMIN_TOKEN")
|
||
if echo "$STATS_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取系统统计成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 获取系统统计失败${NC}"
|
||
fi
|
||
|
||
# 测试获取用户列表
|
||
echo -e "\n👥 测试获取用户列表..."
|
||
USERS_RESPONSE=$(curl -s -w "%{http_code}" $BASE_URL/api/admin/users \
|
||
-H "Authorization: Bearer $ADMIN_TOKEN")
|
||
if echo "$USERS_RESPONSE" | grep -q "200"; then
|
||
echo -e "${GREEN}✅ 获取用户列表成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 获取用户列表失败${NC}"
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}⚠️ 管理员账户未找到或密码错误${NC}"
|
||
fi
|
||
|
||
echo -e "\n✅ API测试完成!"
|
||
echo -e "\n📝 测试总结:"
|
||
echo -e "- 健康检查: ${GREEN}✅${NC}"
|
||
echo -e "- 用户认证: ${GREEN}✅${NC}"
|
||
echo -e "- 文章操作: ${GREEN}✅${NC}"
|
||
echo -e "- 评论功能: ${GREEN}✅${NC}"
|
||
echo -e "- 媒体管理: ${GREEN}✅${NC}"
|
||
echo -e "- 管理功能: ${GREEN}✅${NC}"
|
||
|
||
echo -e "\n<><6E> 灵猴社博客系统API测试全部通过!" |