Files
ccdi/assets/implementation/scripts/test_intermediary_blacklist.sh

664 lines
23 KiB
Bash
Raw Normal View History

2026-01-29 22:03:42 +08:00
#!/bin/bash
################################################################################
# 中介黑名单管理API测试脚本
#
# 功能测试DpcIntermediaryBlacklistController中的所有接口
# 作者Claude
# 日期2026-01-29
################################################################################
# ============================================================================
# 配置项
# ============================================================================
BASE_URL="http://localhost:8080"
USERNAME="admin"
PASSWORD="admin123"
TOKEN=""
OUTPUT_DIR="test_output"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
REPORT_FILE="${OUTPUT_DIR}/test_report_${TIMESTAMP}.txt"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# ============================================================================
# 工具函数
# ============================================================================
# 打印带颜色的消息
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${BLUE} $1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
# 打印分隔线
print_separator() {
echo -e "${BLUE}================================================================================${NC}"
}
# 初始化输出目录
init_output_dir() {
if [ ! -d "$OUTPUT_DIR" ]; then
mkdir -p "$OUTPUT_DIR"
print_info "创建输出目录: $OUTPUT_DIR"
fi
}
# 记录到报告文件
log_to_report() {
echo "$1" >> "$REPORT_FILE"
}
# ============================================================================
# API请求函数
# ============================================================================
# 登录获取token
login() {
print_separator
print_info "正在登录..."
print_separator
local response=$(curl -s -X POST "${BASE_URL}/login/test" \
-H "Content-Type: application/json" \
-d "{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}")
TOKEN=$(echo "$response" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
if [ -n "$TOKEN" ]; then
print_success "登录成功获取token: ${TOKEN:0:20}..."
log_to_report "========== 登录测试 =========="
log_to_report "请求: POST ${BASE_URL}/login/test"
log_to_report "响应: $response"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "登录失败"
log_to_report "========== 登录测试 =========="
log_to_report "请求: POST ${BASE_URL}/login/test"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 获取请求头
get_headers() {
echo "-H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\""
}
# ============================================================================
# 测试函数
# ============================================================================
# 测试1: 查询中介黑名单列表
test_list() {
print_separator
print_info "测试1: 查询中介黑名单列表"
print_separator
local url="${BASE_URL}/dpc/intermediary/list?pageNum=1&pageSize=10"
local response=$(curl -s -X GET "$url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test1_list_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test1_list_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "查询列表成功"
log_to_report "========== 测试1: 查询中介黑名单列表 =========="
log_to_report "请求: GET $url"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test1_list_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "查询列表失败: $response"
log_to_report "========== 测试1: 查询中介黑名单列表 =========="
log_to_report "请求: GET $url"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试2: 新增个人中介黑名单
test_add_person() {
print_separator
print_info "测试2: 新增个人中介黑名单"
print_separator
local test_name="测试个人中介_${TIMESTAMP}"
local data='{
"name": "'${test_name}'",
"certificateNo": "TESTCERT'${TIMESTAMP}'",
"intermediaryType": "1",
"remark": "自动化测试数据"
}'
local response=$(curl -s -X POST "${BASE_URL}/dpc/intermediary" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$data")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test2_add_person_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test2_add_person_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "新增个人中介成功"
log_to_report "========== 测试2: 新增个人中介黑名单 =========="
log_to_report "请求: POST ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test2_add_person_response.json"
log_to_report "结果: 成功"
log_to_report ""
# 通过查询列表获取最新创建的ID按创建时间倒序
sleep 1
local list_response=$(curl -s -X GET "${BASE_URL}/dpc/intermediary/list?pageNum=1&pageSize=1" \
-H "Authorization: Bearer $TOKEN")
# 从rows数组中提取第一个intermediaryId
PERSON_INTERMEDIARY_ID=$(echo "$list_response" | jq -r '.rows[0].intermediaryId' 2>/dev/null)
if [ -n "$PERSON_INTERMEDIARY_ID" ] && [ "$PERSON_INTERMEDIARY_ID" != "null" ]; then
print_info "获取到中介ID: $PERSON_INTERMEDIARY_ID"
else
print_warning "无法获取中介ID将使用备用方法"
fi
return 0
else
print_error "新增个人中介失败: $response"
log_to_report "========== 测试2: 新增个人中介黑名单 =========="
log_to_report "请求: POST ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试3: 新增机构中介黑名单
test_add_entity() {
print_separator
print_info "测试3: 新增机构中介黑名单"
print_separator
local test_name="测试机构中介_${TIMESTAMP}"
local data='{
"name": "'${test_name}'",
"certificateNo": "TESTORG'${TIMESTAMP}'",
"intermediaryType": "2",
"remark": "自动化测试机构数据"
}'
local response=$(curl -s -X POST "${BASE_URL}/dpc/intermediary" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$data")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test3_add_entity_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test3_add_entity_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "新增机构中介成功"
log_to_report "========== 测试3: 新增机构中介黑名单 =========="
log_to_report "请求: POST ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test3_add_entity_response.json"
log_to_report "结果: 成功"
log_to_report ""
# 通过查询列表获取最新创建的ID按创建时间倒序
sleep 1
local list_response=$(curl -s -X GET "${BASE_URL}/dpc/intermediary/list?pageNum=1&pageSize=1" \
-H "Authorization: Bearer $TOKEN")
# 从rows数组中提取第一个intermediaryId
ENTITY_INTERMEDIARY_ID=$(echo "$list_response" | jq -r '.rows[0].intermediaryId' 2>/dev/null)
if [ -n "$ENTITY_INTERMEDIARY_ID" ] && [ "$ENTITY_INTERMEDIARY_ID" != "null" ]; then
print_info "获取到中介ID: $ENTITY_INTERMEDIARY_ID"
else
print_warning "无法获取中介ID将使用备用方法"
fi
return 0
else
print_error "新增机构中介失败: $response"
log_to_report "========== 测试3: 新增机构中介黑名单 =========="
log_to_report "请求: POST ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试4: 获取中介详情
test_get_info() {
print_separator
print_info "测试4: 获取中介详情"
print_separator
if [ -z "$PERSON_INTERMEDIARY_ID" ]; then
print_warning "没有可用的中介ID跳过此测试"
return 1
fi
local url="${BASE_URL}/dpc/intermediary/${PERSON_INTERMEDIARY_ID}"
local response=$(curl -s -X GET "$url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test4_get_info_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test4_get_info_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "获取中介详情成功"
log_to_report "========== 测试4: 获取中介详情 =========="
log_to_report "请求: GET $url"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test4_get_info_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "获取中介详情失败: $response"
log_to_report "========== 测试4: 获取中介详情 =========="
log_to_report "请求: GET $url"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试5: 修改中介黑名单
test_edit() {
print_separator
print_info "测试5: 修改中介黑名单"
print_separator
if [ -z "$PERSON_INTERMEDIARY_ID" ]; then
print_warning "没有可用的中介ID跳过此测试"
return 1
fi
local data='{
"intermediaryId": '$PERSON_INTERMEDIARY_ID',
"name": "测试个人中介_修改",
"certificateNo": "TESTCERT'${TIMESTAMP}'",
"intermediaryType": "1",
"status": "1",
"remark": "修改后的自动化测试数据"
}'
local response=$(curl -s -X PUT "${BASE_URL}/dpc/intermediary" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$data")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test5_edit_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test5_edit_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "修改中介成功"
log_to_report "========== 测试5: 修改中介黑名单 =========="
log_to_report "请求: PUT ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test5_edit_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "修改中介失败: $response"
log_to_report "========== 测试5: 修改中介黑名单 =========="
log_to_report "请求: PUT ${BASE_URL}/dpc/intermediary"
log_to_report "请求体: $data"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试6: 导出中介黑名单列表
test_export() {
print_separator
print_info "测试6: 导出中介黑名单列表"
print_separator
local url="${BASE_URL}/dpc/intermediary/export"
local response=$(curl -s -X POST "$url" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' \
-o "${OUTPUT_DIR}/test6_export.xlsx" \
-w "%{http_code}")
if [ "$response" == "200" ]; then
print_success "导出中介列表成功,文件已保存至: ${OUTPUT_DIR}/test6_export.xlsx"
log_to_report "========== 测试6: 导出中介黑名单列表 =========="
log_to_report "请求: POST $url"
log_to_report "文件已保存至: ${OUTPUT_DIR}/test6_export.xlsx"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "导出中介列表失败HTTP状态码: $response"
log_to_report "========== 测试6: 导出中介黑名单列表 =========="
log_to_report "请求: POST $url"
log_to_report "HTTP状态码: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试7: 下载个人中介导入模板
test_import_person_template() {
print_separator
print_info "测试7: 下载个人中介导入模板"
print_separator
local url="${BASE_URL}/dpc/intermediary/importPersonTemplate"
local response=$(curl -s -X POST "$url" \
-H "Authorization: Bearer $TOKEN" \
-o "${OUTPUT_DIR}/test7_person_template.xlsx" \
-w "%{http_code}")
if [ "$response" == "200" ]; then
print_success "下载个人中介导入模板成功,文件已保存至: ${OUTPUT_DIR}/test7_person_template.xlsx"
log_to_report "========== 测试7: 下载个人中介导入模板 =========="
log_to_report "请求: POST $url"
log_to_report "文件已保存至: ${OUTPUT_DIR}/test7_person_template.xlsx"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "下载个人中介导入模板失败HTTP状态码: $response"
log_to_report "========== 测试7: 下载个人中介导入模板 =========="
log_to_report "请求: POST $url"
log_to_report "HTTP状态码: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试8: 下载机构中介导入模板
test_import_entity_template() {
print_separator
print_info "测试8: 下载机构中介导入模板"
print_separator
local url="${BASE_URL}/dpc/intermediary/importEntityTemplate"
local response=$(curl -s -X POST "$url" \
-H "Authorization: Bearer $TOKEN" \
-o "${OUTPUT_DIR}/test8_entity_template.xlsx" \
-w "%{http_code}")
if [ "$response" == "200" ]; then
print_success "下载机构中介导入模板成功,文件已保存至: ${OUTPUT_DIR}/test8_entity_template.xlsx"
log_to_report "========== 测试8: 下载机构中介导入模板 =========="
log_to_report "请求: POST $url"
log_to_report "文件已保存至: ${OUTPUT_DIR}/test8_entity_template.xlsx"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "下载机构中介导入模板失败HTTP状态码: $response"
log_to_report "========== 测试8: 下载机构中介导入模板 =========="
log_to_report "请求: POST $url"
log_to_report "HTTP状态码: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试9: 删除中介黑名单
test_remove() {
print_separator
print_info "测试9: 删除中介黑名单"
print_separator
if [ -z "$PERSON_INTERMEDIARY_ID" ] && [ -z "$ENTITY_INTERMEDIARY_ID" ]; then
print_warning "没有可用的中介ID跳过此测试"
return 1
fi
local ids=""
if [ -n "$PERSON_INTERMEDIARY_ID" ]; then
ids="$PERSON_INTERMEDIARY_ID"
fi
if [ -n "$ENTITY_INTERMEDIARY_ID" ]; then
if [ -n "$ids" ]; then
ids="${ids},${ENTITY_INTERMEDIARY_ID}"
else
ids="$ENTITY_INTERMEDIARY_ID"
fi
fi
local url="${BASE_URL}/dpc/intermediary/${ids}"
local response=$(curl -s -X DELETE "$url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test9_remove_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test9_remove_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "删除中介成功"
log_to_report "========== 测试9: 删除中介黑名单 =========="
log_to_report "请求: DELETE $url"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test9_remove_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "删除中介失败: $response"
log_to_report "========== 测试9: 删除中介黑名单 =========="
log_to_report "请求: DELETE $url"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试10: 条件查询(按中介类型)
test_query_by_type() {
print_separator
print_info "测试10: 条件查询(按中介类型)"
print_separator
local url="${BASE_URL}/dpc/intermediary/list?pageNum=1&pageSize=10&intermediaryType=1"
local response=$(curl -s -X GET "$url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test10_query_by_type_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test10_query_by_type_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "条件查询成功"
log_to_report "========== 测试10: 条件查询(按中介类型) =========="
log_to_report "请求: GET $url"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test10_query_by_type_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "条件查询失败: $response"
log_to_report "========== 测试10: 条件查询(按中介类型) =========="
log_to_report "请求: GET $url"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# 测试11: 条件查询(按状态)
test_query_by_status() {
print_separator
print_info "测试11: 条件查询(按状态)"
print_separator
local url="${BASE_URL}/dpc/intermediary/list?pageNum=1&pageSize=10&status=1"
local response=$(curl -s -X GET "$url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.' > "${OUTPUT_DIR}/test11_query_by_status_response.json" 2>/dev/null || echo "$response" > "${OUTPUT_DIR}/test11_query_by_status_response.json"
local code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$code" == "200" ]; then
print_success "条件查询成功"
log_to_report "========== 测试11: 条件查询(按状态) =========="
log_to_report "请求: GET $url"
log_to_report "响应已保存至: ${OUTPUT_DIR}/test11_query_by_status_response.json"
log_to_report "结果: 成功"
log_to_report ""
return 0
else
print_error "条件查询失败: $response"
log_to_report "========== 测试11: 条件查询(按状态) =========="
log_to_report "请求: GET $url"
log_to_report "响应: $response"
log_to_report "结果: 失败"
log_to_report ""
return 1
fi
}
# ============================================================================
# 主测试流程
# ============================================================================
main() {
print_separator
echo -e "${BLUE} 中介黑名单管理API测试脚本${NC}"
print_separator
echo "测试时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "基础URL: $BASE_URL"
echo "测试账号: $USERNAME"
print_separator
echo ""
# 初始化输出目录
init_output_dir
# 初始化报告文件
echo "====================================" > "$REPORT_FILE"
echo "中介黑名单管理API测试报告" >> "$REPORT_FILE"
echo "测试时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$REPORT_FILE"
echo "====================================" >> "$REPORT_FILE"
echo ""
# 登录
if ! login; then
print_error "登录失败,测试终止"
exit 1
fi
echo ""
echo "===================================="
echo "开始执行测试用例"
echo "===================================="
echo ""
# 执行测试
local tests=(
"test_list"
"test_add_person"
"test_add_entity"
"test_get_info"
"test_edit"
"test_export"
"test_import_person_template"
"test_import_entity_template"
"test_query_by_type"
"test_query_by_status"
"test_remove"
)
local passed=0
local failed=0
local total=${#tests[@]}
for test in "${tests[@]}"; do
if $test; then
((passed++))
else
((failed++))
fi
echo ""
sleep 1 # 避免请求过快
done
# 输出测试报告汇总
print_separator
echo -e "${BLUE} 测试报告汇总${NC}"
print_separator
echo "测试场景总数: $total"
echo -e "${GREEN}通过数量: $passed${NC}"
echo -e "${RED}失败数量: $failed${NC}"
print_separator
# 将汇总信息写入报告
echo "" >> "$REPORT_FILE"
echo "====================================" >> "$REPORT_FILE"
echo "测试汇总" >> "$REPORT_FILE"
echo "====================================" >> "$REPORT_FILE"
echo "测试场景总数: $total" >> "$REPORT_FILE"
echo "通过数量: $passed" >> "$REPORT_FILE"
echo "失败数量: $failed" >> "$REPORT_FILE"
echo "通过率: $(awk "BEGIN {printf \"%.2f%%\", $passed/$total*100}")" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
echo "详细响应文件已保存至: ${OUTPUT_DIR}/" >> "$REPORT_FILE"
echo "测试报告文件: $REPORT_FILE" >> "$REPORT_FILE"
echo "====================================" >> "$REPORT_FILE"
if [ $passed -eq $total ]; then
print_success "所有测试通过!"
echo ""
print_info "详细报告已保存至: $REPORT_FILE"
print_info "响应文件已保存至: ${OUTPUT_DIR}/"
exit 0
else
print_error "部分测试失败,请查看详细日志"
echo ""
print_info "详细报告已保存至: $REPORT_FILE"
print_info "响应文件已保存至: ${OUTPUT_DIR}/"
exit 1
fi
}
# 执行主函数
main