225 lines
6.0 KiB
Bash
225 lines
6.0 KiB
Bash
#!/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
|