312 lines
9.9 KiB
Bash
312 lines
9.9 KiB
Bash
#!/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
|