Spaces:
Configuration error
Configuration error
| # 聊天应用测试脚本 | |
| echo "🧪 聊天应用功能测试" | |
| echo "==================" | |
| echo | |
| # 测试后端API | |
| echo "🔧 测试后端API..." | |
| # 健康检查 | |
| echo -n " 健康检查: " | |
| if curl -f -s http://localhost:5000/api/health > /dev/null; then | |
| echo "✅ 通过" | |
| HEALTH=$(curl -s http://localhost:5000/api/health | jq -r '.status') | |
| echo " 状态: $HEALTH" | |
| else | |
| echo "❌ 失败" | |
| fi | |
| # 测试注册API | |
| echo -n " 注册API: " | |
| REGISTER_RESPONSE=$(curl -s -X POST http://localhost:5000/api/register \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "username": "testuser", | |
| "email": "test@example.com", | |
| "password": "testpass123" | |
| }') | |
| if echo "$REGISTER_RESPONSE" | jq -e '.token' > /dev/null 2>&1; then | |
| echo "✅ 通过" | |
| TOKEN=$(echo "$REGISTER_RESPONSE" | jq -r '.token') | |
| else | |
| echo "⚠️ 用户可能已存在" | |
| # 尝试登录 | |
| LOGIN_RESPONSE=$(curl -s -X POST http://localhost:5000/api/login \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "email": "test@example.com", | |
| "password": "testpass123" | |
| }') | |
| if echo "$LOGIN_RESPONSE" | jq -e '.token' > /dev/null 2>&1; then | |
| echo " 登录成功" | |
| TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.token') | |
| else | |
| echo " ❌ 登录失败" | |
| TOKEN="" | |
| fi | |
| fi | |
| # 测试获取消息API | |
| if [ -n "$TOKEN" ]; then | |
| echo -n " 消息API: " | |
| if curl -f -s -H "Authorization: Bearer $TOKEN" http://localhost:5000/api/messages > /dev/null; then | |
| echo "✅ 通过" | |
| else | |
| echo "❌ 失败" | |
| fi | |
| fi | |
| echo | |
| # 测试前端 | |
| echo "🌐 测试前端服务..." | |
| echo -n " 前端可访问性: " | |
| if curl -f -s http://localhost:3000 > /dev/null; then | |
| echo "✅ 通过" | |
| else | |
| echo "❌ 失败" | |
| fi | |
| echo -n " 静态资源: " | |
| if curl -f -s http://localhost:3000/vite.svg > /dev/null; then | |
| echo "✅ 通过" | |
| else | |
| echo "❌ 失败" | |
| fi | |
| echo | |
| # 测试数据库 | |
| echo "📊 测试数据库..." | |
| echo -n " MongoDB连接: " | |
| if docker exec chat-mongo mongosh --eval "db.adminCommand('ping')" > /dev/null 2>&1; then | |
| echo "✅ 通过" | |
| # 获取数据库统计 | |
| echo " 数据库统计:" | |
| docker exec chat-mongo mongosh chatapp --eval " | |
| print(' 用户数量: ' + db.users.countDocuments()); | |
| print(' 消息数量: ' + db.messages.countDocuments()); | |
| " 2>/dev/null | |
| else | |
| echo "❌ 失败" | |
| fi | |
| echo | |
| # 测试Socket.IO连接 | |
| echo "🔌 测试Socket.IO..." | |
| echo -n " WebSocket连接: " | |
| # 使用Node.js测试Socket.IO连接 | |
| node -e " | |
| const io = require('socket.io-client'); | |
| const socket = io('http://localhost:5000'); | |
| socket.on('connect', () => { | |
| console.log('✅ 通过'); | |
| socket.disconnect(); | |
| process.exit(0); | |
| }); | |
| socket.on('connect_error', (error) => { | |
| console.log('❌ 失败:', error.message); | |
| process.exit(1); | |
| }); | |
| setTimeout(() => { | |
| console.log('❌ 超时'); | |
| process.exit(1); | |
| }, 5000); | |
| " 2>/dev/null || echo "⚠️ 需要安装socket.io-client进行测试" | |
| echo | |
| # 性能测试 | |
| echo "⚡ 性能测试..." | |
| echo -n " API响应时间: " | |
| RESPONSE_TIME=$(curl -o /dev/null -s -w '%{time_total}' http://localhost:5000/api/health) | |
| echo "${RESPONSE_TIME}s" | |
| echo -n " 前端加载时间: " | |
| FRONTEND_TIME=$(curl -o /dev/null -s -w '%{time_total}' http://localhost:3000) | |
| echo "${FRONTEND_TIME}s" | |
| echo | |
| # 安全测试 | |
| echo "🔒 基础安全检查..." | |
| echo -n " CORS配置: " | |
| CORS_HEADER=$(curl -s -I http://localhost:5000/api/health | grep -i "access-control-allow-origin") | |
| if [ -n "$CORS_HEADER" ]; then | |
| echo "✅ 已配置" | |
| else | |
| echo "⚠️ 未检测到CORS头" | |
| fi | |
| echo -n " JWT验证: " | |
| UNAUTH_RESPONSE=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:5000/api/messages) | |
| if [ "$UNAUTH_RESPONSE" = "401" ]; then | |
| echo "✅ 正常(未授权访问被拒绝)" | |
| else | |
| echo "⚠️ 可能存在安全问题" | |
| fi | |
| echo | |
| # 总结 | |
| echo "📋 测试总结" | |
| echo "===========" | |
| echo "✅ 通过的测试将显示绿色勾号" | |
| echo "❌ 失败的测试将显示红色叉号" | |
| echo "⚠️ 警告或需要注意的项目将显示黄色感叹号" | |
| echo | |
| echo "💡 如果有测试失败,请检查:" | |
| echo " 1. 服务是否正常启动" | |
| echo " 2. 端口是否被占用" | |
| echo " 3. 防火墙设置" | |
| echo " 4. Docker容器状态" | |
| echo | |
| echo "🔧 查看详细日志: make logs" | |
| echo "📊 查看监控信息: ./monitor.sh" | |