added:增加Linux-server
This commit is contained in:
1 parent
712116d21d
commit
bd96aadb2f
90 files changed
+16784
-1
No files matched your search
@@ -0,0 +1,276 @@
|
||||
#!/bin/bash
|
||||
# Write Server 功能测试脚本
|
||||
# 测试在线写作和 Telegram Bot 功能
|
||||
|
||||
set -e
|
||||
|
||||
echo "==================================="
|
||||
echo " Write Server 功能测试"
|
||||
echo "==================================="
|
||||
echo ""
|
||||
|
||||
# 加载环境变量
|
||||
if [ -f .env ]; then
|
||||
source .env
|
||||
fi
|
||||
|
||||
PORT=${PORT:-8016}
|
||||
BASE_URL="http://localhost:$PORT"
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 测试结果
|
||||
TESTS_PASSED=0
|
||||
TESTS_FAILED=0
|
||||
|
||||
# 测试函数
|
||||
test_pass() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
((TESTS_PASSED++))
|
||||
}
|
||||
|
||||
test_fail() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
((TESTS_FAILED++))
|
||||
}
|
||||
|
||||
# 检查服务是否运行
|
||||
echo "1. 检查服务状态"
|
||||
if curl -s "$BASE_URL/api/stats" > /dev/null 2>&1; then
|
||||
test_pass "服务正在运行"
|
||||
else
|
||||
test_fail "服务未运行"
|
||||
echo " 请先启动服务: ./scripts/start.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试文章列表 API
|
||||
echo "2. 测试文章管理功能"
|
||||
RESPONSE=$(curl -s "$BASE_URL/api/posts?page=1&perPage=5")
|
||||
if echo "$RESPONSE" | grep -q '"posts"'; then
|
||||
test_pass "文章列表 API 正常"
|
||||
|
||||
# 解析文章数量
|
||||
TOTAL=$(echo "$RESPONSE" | grep -o '"total":[0-9]*' | cut -d: -f2)
|
||||
echo " 📝 共 $TOTAL 篇文章"
|
||||
else
|
||||
test_fail "文章列表 API 异常"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试单篇文章 API
|
||||
echo "3. 测试文章详情功能"
|
||||
# 获取第一篇文章的 slug
|
||||
FIRST_SLUG=$(curl -s "$BASE_URL/api/posts?page=1&perPage=1" | grep -o '"slug":"[^"]*"' | head -n 1 | cut -d'"' -f4)
|
||||
|
||||
if [ -n "$FIRST_SLUG" ]; then
|
||||
POST_RESPONSE=$(curl -s "$BASE_URL/api/posts/$FIRST_SLUG")
|
||||
if echo "$POST_RESPONSE" | grep -q '"title"'; then
|
||||
test_pass "文章详情 API 正常"
|
||||
TITLE=$(echo "$POST_RESPONSE" | grep -o '"title":"[^"]*"' | head -n 1 | cut -d'"' -f4)
|
||||
echo " 📄 测试文章: $TITLE"
|
||||
else
|
||||
test_fail "文章详情 API 异常"
|
||||
fi
|
||||
else
|
||||
test_fail "无法获取文章列表"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试统计 API
|
||||
echo "4. 测试统计功能"
|
||||
STATS_RESPONSE=$(curl -s "$BASE_URL/api/stats")
|
||||
if echo "$STATS_RESPONSE" | grep -q '"total"'; then
|
||||
test_pass "统计 API 正常"
|
||||
else
|
||||
test_fail "统计 API 异常"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试 Hugo 集成
|
||||
echo "5. 测试 Hugo 集成"
|
||||
HUGO_RESPONSE=$(curl -s "$BASE_URL/api/hugo")
|
||||
if echo "$HUGO_RESPONSE" | grep -q '"running"'; then
|
||||
test_pass "Hugo API 正常"
|
||||
|
||||
# 检查 Hugo 是否运行
|
||||
if echo "$HUGO_RESPONSE" | grep -q '"running":true'; then
|
||||
echo " 🚀 Hugo 预览服务正在运行"
|
||||
else
|
||||
echo " ⚠️ Hugo 预览服务未运行(将按需启动)"
|
||||
fi
|
||||
else
|
||||
test_fail "Hugo API 异常"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试评论系统(如果配置了)
|
||||
echo "6. 测试评论系统"
|
||||
if [ -n "$ARTALK_SERVER" ]; then
|
||||
COMMENTS_RESPONSE=$(curl -s "$BASE_URL/api/comments/login" -X POST -H "Content-Type: application/json" -d '{}")
|
||||
if [ $? -eq 0 ]; then
|
||||
test_pass "评论 API 可访问"
|
||||
else
|
||||
test_fail "评论 API 无法访问"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} Artalk 未配置,跳过评论测试"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试 Telegram Bot(如果配置了)
|
||||
echo "7. 测试 Telegram Bot"
|
||||
if [ -n "$TG_BOT_TOKEN" ]; then
|
||||
BOT_RESPONSE=$(curl -s "$BASE_URL/api/bot/status")
|
||||
if echo "$BOT_RESPONSE" | grep -q '"running"'; then
|
||||
test_pass "Bot API 正常"
|
||||
|
||||
# 检查 Bot 状态
|
||||
if echo "$BOT_RESPONSE" | grep -q '"running":true'; then
|
||||
echo " 🤖 Telegram Bot 正在运行"
|
||||
else
|
||||
echo " ⚠️ Telegram Bot 未运行"
|
||||
fi
|
||||
else
|
||||
test_fail "Bot API 异常"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} Telegram Bot Token 未配置,跳过 Bot 测试"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试在线写作功能(模拟)
|
||||
echo "8. 测试在线写作功能"
|
||||
|
||||
# 测试创建文章 API
|
||||
TEST_SLUG="test-$(date +%s)"
|
||||
TEST_POST_DATA='{
|
||||
"frontMatter": {
|
||||
"title": "测试文章",
|
||||
"slug": "'$TEST_SLUG'",
|
||||
"date": "'$(date -Iseconds)'",
|
||||
"draft": true,
|
||||
"categories": ["测试"],
|
||||
"tags": ["test"],
|
||||
"author": "测试"
|
||||
},
|
||||
"content": "这是一篇测试文章的内容。"
|
||||
}'
|
||||
|
||||
CREATE_RESPONSE=$(curl -s "$BASE_URL/api/posts" -X POST -H "Content-Type: application/json" -d "$TEST_POST_DATA")
|
||||
if echo "$CREATE_RESPONSE" | grep -q '"success":true'; then
|
||||
test_pass "创建文章 API 正常"
|
||||
echo " 📝 测试文章已创建: $TEST_SLUG"
|
||||
|
||||
# 测试更新文章
|
||||
UPDATE_DATA='{
|
||||
"frontMatter": {
|
||||
"title": "测试文章(已更新)"
|
||||
},
|
||||
"content": "这是更新后的内容。"
|
||||
}'
|
||||
|
||||
UPDATE_RESPONSE=$(curl -s "$BASE_URL/api/posts/$TEST_SLUG" -X PUT -H "Content-Type: application/json" -d "$UPDATE_DATA")
|
||||
if echo "$UPDATE_RESPONSE" | grep -q '"success":true'; then
|
||||
test_pass "更新文章 API 正常"
|
||||
else
|
||||
test_fail "更新文章 API 异常"
|
||||
fi
|
||||
|
||||
# 测试删除文章(移到回收站)
|
||||
DELETE_RESPONSE=$(curl -s "$BASE_URL/api/posts/$TEST_SLUG" -X DELETE)
|
||||
if echo "$DELETE_RESPONSE" | grep -q '"success":true'; then
|
||||
test_pass "删除文章 API 正常"
|
||||
echo " 🗑️ 测试文章已移到回收站"
|
||||
else
|
||||
test_fail "删除文章 API 异常"
|
||||
fi
|
||||
else
|
||||
test_fail "创建文章 API 异常"
|
||||
echo " 响应: $CREATE_RESPONSE"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试回收站功能
|
||||
echo "9. 测试回收站功能"
|
||||
RECYCLE_RESPONSE=$(curl -s "$BASE_URL/api/recycle")
|
||||
if echo "$RECYCLE_RESPONSE" | grep -q '"posts"'; then
|
||||
test_pass "回收站 API 正常"
|
||||
else
|
||||
test_fail "回收站 API 异常"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试图片上传(模拟)
|
||||
echo "10. 测试图片上传功能"
|
||||
# 创建一个测试图片
|
||||
TEST_IMAGE="/tmp/test-image.png"
|
||||
convert -size 100x100 xc:white "$TEST_IMAGE" 2>/dev/null || {
|
||||
# 如果没有 imagemagick,创建一个空文件
|
||||
echo -n "" > "$TEST_IMAGE"
|
||||
}
|
||||
|
||||
if [ -f "$TEST_IMAGE" ]; then
|
||||
UPLOAD_RESPONSE=$(curl -s "$BASE_URL/api/upload" -X POST -F "file=@$TEST_IMAGE" 2>/dev/null || echo '{"error":"upload failed"}')
|
||||
if echo "$UPLOAD_RESPONSE" | grep -q '"success"'; then
|
||||
test_pass "图片上传 API 正常"
|
||||
else
|
||||
test_fail "图片上传 API 异常"
|
||||
fi
|
||||
rm -f "$TEST_IMAGE"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} 无法创建测试图片,跳过上传测试"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 测试前端页面
|
||||
echo "11. 测试前端页面"
|
||||
PAGES=("/" "/edit" "/comments" "/feeds" "/links" "/images" "/recycle")
|
||||
|
||||
for page in "${PAGES[@]}"; do
|
||||
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL$page")
|
||||
if [ "$RESPONSE" = "200" ]; then
|
||||
test_pass "页面 $page 正常"
|
||||
else
|
||||
test_fail "页面 $page 异常 (HTTP $RESPONSE)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
# 总结
|
||||
echo "==================================="
|
||||
echo " 测试完成"
|
||||
echo "==================================="
|
||||
echo ""
|
||||
echo "通过: $TESTS_PASSED"
|
||||
echo "失败: $TESTS_FAILED"
|
||||
echo ""
|
||||
|
||||
if [ $TESTS_FAILED -gt 0 ]; then
|
||||
echo -e "${RED}部分测试失败${NC}"
|
||||
exit 1
|
||||
else
|
||||
echo -e "${GREEN}所有测试通过!${NC}"
|
||||
echo ""
|
||||
echo "在线写作功能:✓ 正常"
|
||||
echo "Telegram Bot:$([ -n "$TG_BOT_TOKEN" ] && echo "✓ 已配置" || echo "⚠ 未配置")"
|
||||
echo ""
|
||||
echo "访问地址: $BASE_URL"
|
||||
exit 0
|
||||
fi
|
||||
Reference in new issue
Block a user