#!/bin/bash # 员工信息表重命名测试脚本 # 测试 ccdi_base_staff 表及相关功能 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 测试结果统计 TOTAL_TESTS=0 PASSED_TESTS=0 FAILED_TESTS=0 # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } # 测试函数 test_case() { TOTAL_TESTS=$((TOTAL_TESTS + 1)) local test_name=$1 local test_command=$2 local expected_result=$3 echo -e "\n========================================" echo "测试 ${TOTAL_TESTS}: $test_name" echo "========================================" eval "$test_command" local actual_result=$? if [ "$actual_result" -eq "$expected_result" ]; then PASSED_TESTS=$((PASSED_TESTS + 1)) log_info "✓ 测试通过" else FAILED_TESTS=$((FAILED_TESTS + 1)) log_error "✗ 测试失败 (期望: $expected_result, 实际: $actual_result)" fi } # 获取 Token get_token() { log_info "获取登录 Token..." TOKEN=$(curl -s -X POST "http://localhost:8080/login/test" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin123"}' | jq -r '.data.token // empty') if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then log_error "无法获取 Token" exit 1 fi log_info "Token 获取成功: ${TOKEN:0:20}..." } # 测试 1: 验证表结构 test_table_structure() { log_info "验证 ccdi_base_staff 表结构..." local result=$(mysql -h localhost -u root -proot -D discipline_prelim_check -e " SELECT COUNT(*) as cnt FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'discipline_prelim_check' AND TABLE_NAME = 'ccdi_base_staff' AND COLUMN_NAME = 'staff_id';" 2>/dev/null | tail -1) if [ "$result" -eq 1 ]; then return 0 else return 1 fi } # 测试 2: 验证字段不存在 test_field_not_exist() { log_info "验证 teller_no 字段已删除..." local result=$(mysql -h localhost -u root -proot -D discipline_prelim_check -e " SELECT COUNT(*) as cnt FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'discipline_prelim_check' AND TABLE_NAME = 'ccdi_base_staff' AND COLUMN_NAME = 'teller_no';" 2>/dev/null | tail -1) if [ "$result" -eq 0 ]; then return 0 else return 1 fi } # 测试 3: 列表查询接口 test_list_api() { log_info "测试列表查询接口..." local response=$(curl -s -X GET "http://localhost:8080/ccdi/baseStaff/list?pageNum=1&pageSize=10" \ -H "Authorization: Bearer $TOKEN") local code=$(echo $response | jq -r '.code // empty') if [ "$code" = "200" ]; then log_info "响应数据: $(echo $response | jq -r '.data.total // 0') 条记录" return 0 else log_error "API 响应码: $code" log_error "响应内容: $response" return 1 fi } # 测试 4: 详情查询接口 test_query_api() { log_info "测试详情查询接口..." local response=$(curl -s -X GET "http://localhost:8080/ccdi/baseStaff/1000001" \ -H "Authorization: Bearer $TOKEN") local code=$(echo $response | jq -r '.code // empty') if [ "$code" = "200" ] || [ "$code" = "500" ]; then # 200 表示成功,500 表示数据不存在也是正常的 return 0 else log_error "API 响应码: $code" return 1 fi } # 测试 5: 新增接口 test_add_api() { log_info "测试新增接口..." local response=$(curl -s -X POST "http://localhost:8080/ccdi/baseStaff" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "staffId": 9999999, "name": "测试员工", "deptId": 100, "idCard": "110101199001011234", "phone": "13800138000", "status": "0" }') local code=$(echo $response | jq -r '.code // empty') if [ "$code" = "200" ]; then log_info "新增成功,清理测试数据..." curl -s -X DELETE "http://localhost:8080/ccdi/baseStaff/9999999" \ -H "Authorization: Bearer $TOKEN" > /dev/null return 0 else log_error "新增失败,响应码: $code" return 1 fi } # 测试 6: 权限验证 test_permission() { log_info "测试权限字符验证..." local result=$(mysql -h localhost -u root -proot -D discipline_prelim_check -e " SELECT COUNT(*) as cnt FROM sys_menu WHERE perms LIKE 'ccdi:baseStaff:%';" 2>/dev/null | tail -1) if [ "$result" -ge 7 ]; then log_info "找到 $result 个权限配置" return 0 else log_error "权限配置不足,期望至少 7 个,实际 $result 个" return 1 fi } # 主测试流程 main() { echo "==========================================" echo "员工信息表重命名测试" echo "==========================================" # 获取 Token get_token # 运行测试 test_case "验证表结构存在 staff_id 字段" "test_table_structure" 0 test_case "验证 teller_no 字段已删除" "test_field_not_exist" 0 test_case "验证权限配置" "test_permission" 0 test_case "测试列表查询接口" "test_list_api" 0 test_case "测试详情查询接口" "test_query_api" 0 test_case "测试新增接口" "test_add_api" 0 # 输出测试结果 echo -e "\n==========================================" echo "测试结果汇总" echo "==========================================" echo -e "总测试数: ${TOTAL_TESTS}" echo -e "${GREEN}通过: ${PASSED_TESTS}${NC}" echo -e "${RED}失败: ${FAILED_TESTS}${NC}" echo "==========================================" if [ $FAILED_TESTS -eq 0 ]; then log_info "所有测试通过!" exit 0 else log_error "存在失败的测试" exit 1 fi } # 执行测试 main