#!/bin/bash # ============================================================ # 企业客户利率定价流程接口测试脚本 # 用途:测试企业客户发起接口的各项场景 # 使用方法: ./test_corporate_create.sh # ============================================================ # 配置 BASE_URL="http://localhost:8080" LOGIN_URL="${BASE_URL}/login/test" CORPORATE_CREATE_URL="${BASE_URL}/loanPricing/workflow/create/corporate" # 颜色输出 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 测试结果统计 TESTS_PASSED=0 TESTS_FAILED=0 # ============================================================ # 函数:打印测试结果 # ============================================================ print_result() { local test_name="$1" local result="$2" if [ "$result" == "0" ]; then echo -e "${GREEN}✓${NC} $test_name - ${GREEN}PASSED${NC}" ((TESTS_PASSED++)) else echo -e "${RED}✗${NC} $test_name - ${RED}FAILED${NC}" ((TESTS_FAILED++)) fi } # ============================================================ # 步骤 1: 获取测试 Token # ============================================================ echo "==========================================" echo "步骤 1: 获取测试 Token" echo "==========================================" TOKEN_RESPONSE=$(curl -s -X POST "$LOGIN_URL" \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "admin123" }') TOKEN=$(echo "$TOKEN_RESPONSE" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) if [ -z "$TOKEN" ]; then echo -e "${RED}获取 Token 失败${NC}" echo "响应: $TOKEN_RESPONSE" exit 1 fi echo -e "${GREEN}Token 获取成功${NC}" echo "Token: ${TOKEN:0:20}..." # ============================================================ # 步骤 2: 测试企业客户发起 - 成功场景 # ============================================================ echo "" echo "==========================================" echo "步骤 2: 测试企业客户发起 - 成功场景" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP001", "custName": "测试科技有限公司", "idType": "统一社会信用代码", "idNum": "91110000100000000X", "guarType": "抵押", "applyAmt": "1000000", "loanTerm": "36", "isAgriGuar": "false", "isGreenLoan": "true", "isTechEnt": "true" }') # 检查响应 CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) CUST_TYPE=$(echo "$RESPONSE" | grep -o '"custType":"[^"]*"' | cut -d'"' -f4) SERIAL_NUM=$(echo "$RESPONSE" | grep -o '"serialNum":"[^"]*"' | cut -d'"' -f4) if [ "$CODE" == "200" ] && [ "$CUST_TYPE" == "企业" ] && [ -n "$SERIAL_NUM" ]; then print_result "企业客户发起成功场景" "0" echo " 业务流水号: $SERIAL_NUM" else print_result "企业客户发起成功场景" "1" echo " 响应: $RESPONSE" fi # ============================================================ # 步骤 3: 测试缺少必填字段 custIsn # ============================================================ echo "" echo "==========================================" echo "步骤 3: 测试缺少必填字段 custIsn" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custName": "测试企业2", "idType": "统一社会信用代码", "idNum": "91110000100000001X", "guarType": "信用", "applyAmt": "500000" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" == "500" ]; then print_result "缺少 custIsn 字段验证" "0" else print_result "缺少 custIsn 字段验证" "1" fi # ============================================================ # 步骤 4: 测试缺少必填字段 guarType # ============================================================ echo "" echo "==========================================" echo "步骤 4: 测试缺少必填字段 guarType" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP002", "custName": "测试企业3", "idType": "统一社会信用代码", "idNum": "91110000100000002X", "applyAmt": "800000" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" == "500" ]; then print_result "缺少 guarType 字段验证" "0" else print_result "缺少 guarType 字段验证" "1" fi # ============================================================ # 步骤 5: 测试缺少必填字段 applyAmt # ============================================================ echo "" echo "==========================================" echo "步骤 5: 测试缺少必填字段 applyAmt" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP003", "custName": "测试企业4", "guarType": "保证", "idType": "统一社会信用代码", "idNum": "91110000100000003X" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" == "500" ]; then print_result "缺少 applyAmt 字段验证" "0" else print_result "缺少 applyAmt 字段验证" "1" fi # ============================================================ # 步骤 6: 测试担保方式枚举验证失败 # ============================================================ echo "" echo "==========================================" echo "步骤 6: 测试担保方式枚举验证失败" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP004", "custName": "测试企业5", "idType": "统一社会信用代码", "idNum": "91110000100000004X", "guarType": "无效值", "applyAmt": "600000" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" == "500" ]; then print_result "担保方式枚举验证" "0" else print_result "担保方式枚举验证" "1" fi # ============================================================ # 步骤 7: 测试省农担担保贷款标识 # ============================================================ echo "" echo "==========================================" echo "步骤 7: 测试省农担担保贷款标识" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP005", "custName": "农业科技有限公司", "idType": "统一社会信用代码", "idNum": "91110000100000005X", "guarType": "保证", "applyAmt": "2000000", "loanTerm": "60", "isAgriGuar": "true" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) IS_AGRI_GUAR=$(echo "$RESPONSE" | grep -o '"isAgriGuar":"[^"]*"' | cut -d'"' -f4) if [ "$CODE" == "200" ] && [ "$IS_AGRI_GUAR" == "true" ]; then print_result "省农担担保贷款标识正确保存" "0" echo " 省农担标识: $IS_AGRI_GUAR" else print_result "省农担担保贷款标识正确保存" "1" fi # ============================================================ # 步骤 8: 测试贸易和建筑业企业标识 # ============================================================ echo "" echo "==========================================" echo "步骤 8: 测试贸易和建筑业企业标识" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP006", "custName": "建筑工程有限公司", "idType": "统一社会信用代码", "idNum": "91110000100000006X", "guarType": "质押", "applyAmt": "1500000", "loanTerm": "24", "isTradeConstruction": "true" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) IS_TRADE_CONSTRUCTION=$(echo "$RESPONSE" | grep -o '"isTradeConstruction":"[^"]*"' | cut -d'"' -f4) if [ "$CODE" == "200" ] && [ "$IS_TRADE_CONSTRUCTION" == "true" ]; then print_result "贸易和建筑业企业标识正确保存" "0" echo " 贸易建筑标识: $IS_TRADE_CONSTRUCTION" else print_result "贸易和建筑业企业标识正确保存" "1" fi # ============================================================ # 步骤 9: 测试最小必填字段 # ============================================================ echo "" echo "==========================================" echo "步骤 9: 测试最小必填字段" echo "==========================================" RESPONSE=$(curl -s -X POST "$CORPORATE_CREATE_URL" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "custIsn": "CORP007", "guarType": "信用", "applyAmt": "3000000" }') CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" == "200" ]; then print_result "最小必填字段测试" "0" else print_result "最小必填字段测试" "1" fi # ============================================================ # 测试结果汇总 # ============================================================ echo "" echo "==========================================" echo "测试结果汇总" echo "==========================================" echo -e "${GREEN}通过: $TESTS_PASSED${NC}" echo -e "${RED}失败: $TESTS_FAILED${NC}" echo "总计: $((TESTS_PASSED + TESTS_FAILED))" if [ $TESTS_FAILED -eq 0 ]; then echo -e "\n${GREEN}所有测试通过!${NC}" exit 0 else echo -e "\n${RED}存在测试失败,请检查日志${NC}" exit 1 fi