Files
张翔 2de0529d34 feat: 实现登录日志和操作日志的分页查询功能
refactor: 重构日志服务层代码,将分页逻辑移至Repository层

test: 添加日志分页查询的单元测试和组件测试

docs: 更新README文档,记录API响应格式修复过程

chore: 清理无用文件,更新.gitignore配置

build: 添加Jacoco代码覆盖率插件配置

ci: 添加测试环境配置文件application-h2-test.yml

style: 统一日志服务代码格式,添加必要的日志输出
2026-04-03 17:49:55 +08:00

448 lines
13 KiB
Bash
Executable File

#!/bin/bash
BASE_URL="http://localhost:8080"
TEST_RESULTS=()
PASS_COUNT=0
FAIL_COUNT=0
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_test() {
local test_name=$1
local result=$2
local message=$3
if [ "$result" == "PASS" ]; then
echo -e "${GREEN}[PASS]${NC} $test_name"
PASS_COUNT=$((PASS_COUNT + 1))
else
echo -e "${RED}[FAIL]${NC} $test_name - $message"
FAIL_COUNT=$((FAIL_COUNT + 1))
fi
}
echo "========================================="
echo "开始全面业务流程测试"
echo "========================================="
echo ""
echo "========== 1. 用户认证流程测试 =========="
echo ""
echo "1.1 用户登录测试"
LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/api/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"Test@123"}')
if echo "$LOGIN_RESPONSE" | grep -q "token"; then
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
log_test "用户登录" "PASS"
else
log_test "用户登录" "FAIL" "无法获取token"
exit 1
fi
echo ""
echo "1.2 Token验证测试"
USER_INFO=$(curl -s -X GET "$BASE_URL/api/users/1" \
-H "Authorization: Bearer $TOKEN")
if echo "$USER_INFO" | grep -q "admin"; then
log_test "Token验证" "PASS"
else
log_test "Token验证" "FAIL" "Token无效"
fi
echo ""
echo "========== 2. 用户管理流程测试 =========="
echo ""
echo "2.1 获取用户列表测试"
USERS_LIST=$(curl -s -X GET "$BASE_URL/api/users" \
-H "Authorization: Bearer $TOKEN")
if echo "$USERS_LIST" | grep -q "admin"; then
log_test "获取用户列表" "PASS"
else
log_test "获取用户列表" "FAIL" "无法获取用户列表"
fi
echo ""
echo "2.2 创建用户测试"
CREATE_USER_RESPONSE=$(curl -s -X POST "$BASE_URL/api/users" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "testuser_'$(date +%s)'",
"password": "Test@123",
"email": "testuser@example.com",
"phone": "13900139000",
"nickname": "测试用户",
"status": 1
}')
if echo "$CREATE_USER_RESPONSE" | grep -q "id"; then
NEW_USER_ID=$(echo "$CREATE_USER_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建用户" "PASS"
else
log_test "创建用户" "FAIL" "无法创建用户"
fi
echo ""
echo "2.3 更新用户测试"
if [ -n "$NEW_USER_ID" ]; then
UPDATE_USER_RESPONSE=$(curl -s -X PUT "$BASE_URL/api/users/$NEW_USER_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"nickname": "更新后的用户",
"phone": "13900139001"
}')
if echo "$UPDATE_USER_RESPONSE" | grep -q "更新后的用户"; then
log_test "更新用户" "PASS"
else
log_test "更新用户" "FAIL" "无法更新用户"
fi
fi
echo ""
echo "2.4 删除用户测试"
if [ -n "$NEW_USER_ID" ]; then
DELETE_RESPONSE=$(curl -s -X DELETE "$BASE_URL/api/users/$NEW_USER_ID" \
-H "Authorization: Bearer $TOKEN")
if [ -z "$DELETE_RESPONSE" ] || echo "$DELETE_RESPONSE" | grep -q "success"; then
log_test "删除用户" "PASS"
else
log_test "删除用户" "FAIL" "无法删除用户"
fi
fi
echo ""
echo "========== 3. 角色管理流程测试 =========="
echo ""
echo "3.1 获取角色列表测试"
ROLES_LIST=$(curl -s -X GET "$BASE_URL/api/roles" \
-H "Authorization: Bearer $TOKEN")
if echo "$ROLES_LIST" | grep -q "admin"; then
log_test "获取角色列表" "PASS"
else
log_test "获取角色列表" "FAIL" "无法获取角色列表"
fi
echo ""
echo "3.2 创建角色测试"
CREATE_ROLE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/roles" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"roleName": "测试角色_'$(date +%s)'",
"roleKey": "test_role_'$(date +%s)'",
"roleSort": 99,
"status": 1
}')
if echo "$CREATE_ROLE_RESPONSE" | grep -q "id"; then
NEW_ROLE_ID=$(echo "$CREATE_ROLE_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建角色" "PASS"
else
log_test "创建角色" "FAIL" "无法创建角色"
fi
echo ""
echo "3.3 更新角色测试"
if [ -n "$NEW_ROLE_ID" ]; then
UPDATE_ROLE_RESPONSE=$(curl -s -X PUT "$BASE_URL/api/roles/$NEW_ROLE_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"roleName": "更新后的角色"
}')
if echo "$UPDATE_ROLE_RESPONSE" | grep -q "更新后的角色"; then
log_test "更新角色" "PASS"
else
log_test "更新角色" "FAIL" "无法更新角色"
fi
fi
echo ""
echo "3.4 删除角色测试"
if [ -n "$NEW_ROLE_ID" ]; then
DELETE_ROLE_RESPONSE=$(curl -s -X DELETE "$BASE_URL/api/roles/$NEW_ROLE_ID" \
-H "Authorization: Bearer $TOKEN")
if [ -z "$DELETE_ROLE_RESPONSE" ] || echo "$DELETE_ROLE_RESPONSE" | grep -q "success"; then
log_test "删除角色" "PASS"
else
log_test "删除角色" "FAIL" "无法删除角色"
fi
fi
echo ""
echo "========== 4. 菜单管理流程测试 =========="
echo ""
echo "4.1 获取菜单列表测试"
MENUS_LIST=$(curl -s -X GET "$BASE_URL/api/menus" \
-H "Authorization: Bearer $TOKEN")
if echo "$MENUS_LIST" | grep -q "系统管理"; then
log_test "获取菜单列表" "PASS"
else
log_test "获取菜单列表" "FAIL" "无法获取菜单列表"
fi
echo ""
echo "4.2 创建菜单测试"
CREATE_MENU_RESPONSE=$(curl -s -X POST "$BASE_URL/api/menus" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"menuName": "测试菜单_'$(date +%s)'",
"parentId": 0,
"orderNum": 99,
"menuType": "M",
"status": "1"
}')
if echo "$CREATE_MENU_RESPONSE" | grep -q "id"; then
NEW_MENU_ID=$(echo "$CREATE_MENU_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建菜单" "PASS"
else
log_test "创建菜单" "FAIL" "无法创建菜单"
fi
echo ""
echo "4.3 更新菜单测试"
if [ -n "$NEW_MENU_ID" ]; then
UPDATE_MENU_RESPONSE=$(curl -s -X PUT "$BASE_URL/api/menus/$NEW_MENU_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"menuName": "更新后的菜单"
}')
if echo "$UPDATE_MENU_RESPONSE" | grep -q "更新后的菜单"; then
log_test "更新菜单" "PASS"
else
log_test "更新菜单" "FAIL" "无法更新菜单"
fi
fi
echo ""
echo "4.4 删除菜单测试"
if [ -n "$NEW_MENU_ID" ]; then
DELETE_MENU_RESPONSE=$(curl -s -X DELETE "$BASE_URL/api/menus/$NEW_MENU_ID" \
-H "Authorization: Bearer $TOKEN")
if [ -z "$DELETE_MENU_RESPONSE" ] || echo "$DELETE_MENU_RESPONSE" | grep -q "success"; then
log_test "删除菜单" "PASS"
else
log_test "删除菜单" "FAIL" "无法删除菜单"
fi
fi
echo ""
echo "========== 5. 权限管理流程测试 =========="
echo ""
echo "5.1 获取权限列表测试"
PERMISSIONS_LIST=$(curl -s -X GET "$BASE_URL/api/permissions" \
-H "Authorization: Bearer $TOKEN")
if echo "$PERMISSIONS_LIST" | grep -q "system:manage"; then
log_test "获取权限列表" "PASS"
else
log_test "获取权限列表" "FAIL" "无法获取权限列表"
fi
echo ""
echo "5.2 创建权限测试"
CREATE_PERMISSION_RESPONSE=$(curl -s -X POST "$BASE_URL/api/permissions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"permissionName": "测试权限_'$(date +%s)'",
"permissionKey": "test:permission:'$(date +%s)'",
"permissionType": "button",
"parentId": 0,
"status": 1
}')
if echo "$CREATE_PERMISSION_RESPONSE" | grep -q "id"; then
NEW_PERMISSION_ID=$(echo "$CREATE_PERMISSION_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建权限" "PASS"
else
log_test "创建权限" "FAIL" "无法创建权限"
fi
echo ""
echo "5.3 更新权限测试"
if [ -n "$NEW_PERMISSION_ID" ]; then
UPDATE_PERMISSION_RESPONSE=$(curl -s -X PUT "$BASE_URL/api/permissions/$NEW_PERMISSION_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"permissionName": "更新后的权限"
}')
if echo "$UPDATE_PERMISSION_RESPONSE" | grep -q "更新后的权限"; then
log_test "更新权限" "PASS"
else
log_test "更新权限" "FAIL" "无法更新权限"
fi
fi
echo ""
echo "5.4 删除权限测试"
if [ -n "$NEW_PERMISSION_ID" ]; then
DELETE_PERMISSION_RESPONSE=$(curl -s -X DELETE "$BASE_URL/api/permissions/$NEW_PERMISSION_ID" \
-H "Authorization: Bearer $TOKEN")
if [ -z "$DELETE_PERMISSION_RESPONSE" ] || echo "$DELETE_PERMISSION_RESPONSE" | grep -q "success"; then
log_test "删除权限" "PASS"
else
log_test "删除权限" "FAIL" "无法删除权限"
fi
fi
echo ""
echo "========== 6. 字典管理流程测试 =========="
echo ""
echo "6.1 获取字典类型列表测试"
DICT_TYPES_LIST=$(curl -s -X GET "$BASE_URL/api/dict/types" \
-H "Authorization: Bearer $TOKEN")
if echo "$DICT_TYPES_LIST" | grep -q "user_status"; then
log_test "获取字典类型列表" "PASS"
else
log_test "获取字典类型列表" "FAIL" "无法获取字典类型列表"
fi
echo ""
echo "6.2 创建字典类型测试"
CREATE_DICT_TYPE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/dict/types" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"dictName": "测试字典_'$(date +%s)'",
"dictType": "test_dict_'$(date +%s)'",
"status": "0"
}')
if echo "$CREATE_DICT_TYPE_RESPONSE" | grep -q "id"; then
NEW_DICT_TYPE_ID=$(echo "$CREATE_DICT_TYPE_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建字典类型" "PASS"
else
log_test "创建字典类型" "FAIL" "无法创建字典类型"
fi
echo ""
echo "6.3 获取字典数据列表测试"
DICT_DATA_LIST=$(curl -s -X GET "$BASE_URL/api/dict/data" \
-H "Authorization: Bearer $TOKEN")
if echo "$DICT_DATA_LIST" | grep -q "正常"; then
log_test "获取字典数据列表" "PASS"
else
log_test "获取字典数据列表" "FAIL" "无法获取字典数据列表"
fi
echo ""
echo "========== 7. 系统配置管理流程测试 =========="
echo ""
echo "7.1 获取系统配置列表测试"
CONFIG_LIST=$(curl -s -X GET "$BASE_URL/api/config" \
-H "Authorization: Bearer $TOKEN")
if echo "$CONFIG_LIST" | grep -q "sys.user.initPassword"; then
log_test "获取系统配置列表" "PASS"
else
log_test "获取系统配置列表" "FAIL" "无法获取系统配置列表"
fi
echo ""
echo "7.2 创建系统配置测试"
CREATE_CONFIG_RESPONSE=$(curl -s -X POST "$BASE_URL/api/config" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"configName": "测试配置_'$(date +%s)'",
"configKey": "test.config.'$(date +%s)'",
"configValue": "test_value",
"configType": "Y"
}')
if echo "$CREATE_CONFIG_RESPONSE" | grep -q "id"; then
NEW_CONFIG_ID=$(echo "$CREATE_CONFIG_RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2)
log_test "创建系统配置" "PASS"
else
log_test "创建系统配置" "FAIL" "无法创建系统配置"
fi
echo ""
echo "========== 8. 日志管理流程测试 =========="
echo ""
echo "8.1 获取登录日志列表测试"
LOGIN_LOG_LIST=$(curl -s -X GET "$BASE_URL/api/logs/login" \
-H "Authorization: Bearer $TOKEN")
if [ -n "$LOGIN_LOG_LIST" ]; then
log_test "获取登录日志列表" "PASS"
else
log_test "获取登录日志列表" "FAIL" "无法获取登录日志列表"
fi
echo ""
echo "8.2 获取操作日志列表测试"
OPERATION_LOG_LIST=$(curl -s -X GET "$BASE_URL/api/logs/operation" \
-H "Authorization: Bearer $TOKEN")
if [ -n "$OPERATION_LOG_LIST" ]; then
log_test "获取操作日志列表" "PASS"
else
log_test "获取操作日志列表" "FAIL" "无法获取操作日志列表"
fi
echo ""
echo "========== 9. 统计数据测试 =========="
echo ""
echo "9.1 获取系统概览统计测试"
STATS_OVERVIEW=$(curl -s -X GET "$BASE_URL/api/stats/overview" \
-H "Authorization: Bearer $TOKEN")
if echo "$STATS_OVERVIEW" | grep -q "userCount\|roleCount\|menuCount"; then
log_test "获取系统概览统计" "PASS"
else
log_test "获取系统概览统计" "FAIL" "无法获取系统概览统计"
fi
echo ""
echo "========================================="
echo "测试执行完成"
echo "========================================="
echo ""
echo -e "${GREEN}通过测试: $PASS_COUNT${NC}"
echo -e "${RED}失败测试: $FAIL_COUNT${NC}"
echo -e "总计测试: $((PASS_COUNT + FAIL_COUNT))"
echo ""
if [ $FAIL_COUNT -eq 0 ]; then
echo -e "${GREEN}所有测试通过!${NC}"
exit 0
else
echo -e "${RED}存在失败的测试!${NC}"
exit 1
fi