客户类型字段更新
This commit is contained in:
224
test_api/test_corporate_create.http
Normal file
224
test_api/test_corporate_create.http
Normal file
@@ -0,0 +1,224 @@
|
||||
### ============================================================
|
||||
### 企业客户利率定价流程接口测试脚本
|
||||
### 用途:测试企业客户发起接口的各项场景
|
||||
### ============================================================
|
||||
|
||||
### ============================================================
|
||||
### 1. 获取测试 Token(如果未获取)
|
||||
### ============================================================
|
||||
POST http://localhost:8080/login/test
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Request executed successfully", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.global.set("token", response.body.data.token);
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 2. 企业客户发起 - 成功场景(完整必填字段)
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP001",
|
||||
"custName": "测试科技有限公司",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000000X",
|
||||
"guarType": "抵押",
|
||||
"applyAmt": "1000000",
|
||||
"loanTerm": "36",
|
||||
"isAgriGuar": "false",
|
||||
"isGreenLoan": "true",
|
||||
"isTechEnt": "true"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Corporate loan creation successful", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.custType === "企业", "Customer type is 企业");
|
||||
client.assert(response.body.data.serialNum !== null, "Serial number is generated");
|
||||
client.assert(response.body.data.loanTerm === "36", "Loan term is correct");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 3. 企业客户发起 - 缺少必填字段 custIsn
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custName": "测试企业2",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000001X",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "500000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing custIsn validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 4. 企业客户发起 - 缺少必填字段 guarType
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP002",
|
||||
"custName": "测试企业3",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000002X",
|
||||
"applyAmt": "800000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing guarType validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 5. 企业客户发起 - 缺少必填字段 applyAmt
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP003",
|
||||
"custName": "测试企业4",
|
||||
"guarType": "保证",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000003X"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing applyAmt validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 6. 企业客户发起 - 担保方式枚举验证失败
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP004",
|
||||
"custName": "测试企业5",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000004X",
|
||||
"guarType": "无效值",
|
||||
"applyAmt": "600000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Invalid guarType validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 7. 企业客户发起 - 包含省农担担保贷款标识
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP005",
|
||||
"custName": "农业科技有限公司",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000005X",
|
||||
"guarType": "保证",
|
||||
"applyAmt": "2000000",
|
||||
"loanTerm": "60",
|
||||
"isAgriGuar": "true"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Corporate loan with agricultural guarantee", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.isAgriGuar === "true", "Agricultural guarantee is set");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 8. 企业客户发起 - 贸易和建筑业企业标识
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP006",
|
||||
"custName": "建筑工程有限公司",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000006X",
|
||||
"guarType": "质押",
|
||||
"applyAmt": "1500000",
|
||||
"loanTerm": "24",
|
||||
"isTradeConstruction": "true"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Corporate loan for trade/construction", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.isTradeConstruction === "true", "Trade/construction flag is set");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 9. 企业客户发起 - 所有字段必填(信用贷款场景)
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/corporate
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "CORP007",
|
||||
"custName": "科技创新有限公司",
|
||||
"idType": "统一社会信用代码",
|
||||
"idNum": "91110000100000007X",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "3000000",
|
||||
"loanTerm": "12",
|
||||
"isAgriGuar": "false",
|
||||
"isGreenLoan": "true",
|
||||
"isTechEnt": "true",
|
||||
"isTradeConstruction": "false",
|
||||
"collType": "一类",
|
||||
"collThirdParty": "false"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Corporate loan with all required fields", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
});
|
||||
%}
|
||||
311
test_api/test_corporate_create.sh
Normal file
311
test_api/test_corporate_create.sh
Normal file
@@ -0,0 +1,311 @@
|
||||
#!/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
|
||||
196
test_api/test_personal_create.http
Normal file
196
test_api/test_personal_create.http
Normal file
@@ -0,0 +1,196 @@
|
||||
### ============================================================
|
||||
### 个人客户利率定价流程接口测试脚本
|
||||
### 用途:测试个人客户发起接口的各项场景
|
||||
### ============================================================
|
||||
|
||||
### ============================================================
|
||||
### 1. 获取测试 Token
|
||||
### ============================================================
|
||||
POST http://localhost:8080/login/test
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Request executed successfully", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.global.set("token", response.body.data.token);
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 2. 个人客户发起 - 成功场景(完整必填字段)
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST001",
|
||||
"custName": "张三",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011234",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "500000",
|
||||
"bizProof": "true",
|
||||
"loanLoop": "false"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Personal loan creation successful", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.custType === "个人", "Customer type is 个人");
|
||||
client.assert(response.body.data.serialNum !== null, "Serial number is generated");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 3. 个人客户发起 - 缺少必填字段 custIsn
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custName": "张三",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011234",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "500000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing custIsn validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 4. 个人客户发起 - 缺少必填字段 guarType
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST002",
|
||||
"custName": "李四",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011235",
|
||||
"applyAmt": "300000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing guarType validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 5. 个人客户发起 - 缺少必填字段 applyAmt
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST003",
|
||||
"custName": "王五",
|
||||
"guarType": "保证",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011236"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Missing applyAmt validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 6. 个人客户发起 - 担保方式枚举验证失败
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST004",
|
||||
"custName": "赵六",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011237",
|
||||
"guarType": "无效值",
|
||||
"applyAmt": "200000"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Invalid guarType validation works", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 500, "Response code indicates validation error");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 7. 个人客户发起 - 包含抵质押信息
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST005",
|
||||
"custName": "孙七",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011238",
|
||||
"guarType": "抵押",
|
||||
"applyAmt": "800000",
|
||||
"bizProof": "true",
|
||||
"loanLoop": "true",
|
||||
"collType": "一类",
|
||||
"collThirdParty": "false"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Personal loan with collateral info", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.collType === "一类", "Collateral type is correct");
|
||||
client.assert(response.body.data.loanLoop === "true", "Loan loop is set");
|
||||
});
|
||||
%}
|
||||
|
||||
### ============================================================
|
||||
### 8. 个人客户发起 - 所有字段必填(质押贷款场景)
|
||||
### ============================================================
|
||||
POST http://localhost:8080/loanPricing/workflow/create/personal
|
||||
Authorization: Bearer {{token}}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"custIsn": "TEST006",
|
||||
"custName": "周八",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011239",
|
||||
"guarType": "质押",
|
||||
"applyAmt": "100000",
|
||||
"bizProof": "false",
|
||||
"loanLoop": "false",
|
||||
"collType": "二类",
|
||||
"collThirdParty": "true"
|
||||
}
|
||||
|
||||
> {%
|
||||
client.test("Personal loan with all required fields", function () {
|
||||
client.assert(response.status === 200, "Response status is 200");
|
||||
client.assert(response.body.code === 200, "Response code is 200");
|
||||
client.assert(response.body.data.collThirdParty === "true", "Collateral third party is set");
|
||||
});
|
||||
%}
|
||||
281
test_api/test_personal_create.sh
Normal file
281
test_api/test_personal_create.sh
Normal file
@@ -0,0 +1,281 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# 个人客户利率定价流程接口测试脚本
|
||||
# 用途:测试个人客户发起接口的各项场景
|
||||
# 使用方法: ./test_personal_create.sh
|
||||
# ============================================================
|
||||
|
||||
# 配置
|
||||
BASE_URL="http://localhost:8080"
|
||||
LOGIN_URL="${BASE_URL}/login/test"
|
||||
PERSONAL_CREATE_URL="${BASE_URL}/loanPricing/workflow/create/personal"
|
||||
|
||||
# 颜色输出
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST001",
|
||||
"custName": "张三",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011234",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "500000",
|
||||
"bizProof": "true",
|
||||
"loanLoop": "false"
|
||||
}')
|
||||
|
||||
# 检查响应
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custName": "李四",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011235",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "300000"
|
||||
}')
|
||||
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST002",
|
||||
"custName": "王五",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011236",
|
||||
"applyAmt": "300000"
|
||||
}')
|
||||
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST003",
|
||||
"custName": "赵六",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011237",
|
||||
"guarType": "保证"
|
||||
}')
|
||||
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST004",
|
||||
"custName": "孙七",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011238",
|
||||
"guarType": "无效值",
|
||||
"applyAmt": "200000"
|
||||
}')
|
||||
|
||||
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 "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST005",
|
||||
"custName": "周八",
|
||||
"idType": "身份证",
|
||||
"idNum": "110101199001011239",
|
||||
"guarType": "抵押",
|
||||
"applyAmt": "800000",
|
||||
"bizProof": "true",
|
||||
"loanLoop": "true",
|
||||
"collType": "一类",
|
||||
"collThirdParty": "false"
|
||||
}')
|
||||
|
||||
CODE=$(echo "$RESPONSE" | grep -o '"code":[0-9]*' | cut -d':' -f2)
|
||||
COLL_TYPE=$(echo "$RESPONSE" | grep -o '"collType":"[^"]*"' | cut -d'"' -f4)
|
||||
LOAN_LOOP=$(echo "$RESPONSE" | grep -o '"loanLoop":"[^"]*"' | cut -d'"' -f4)
|
||||
|
||||
if [ "$CODE" == "200" ] && [ "$COLL_TYPE" == "一类" ] && [ "$LOAN_LOOP" == "true" ]; then
|
||||
print_result "抵质押信息正确保存" "0"
|
||||
echo " 抵质押类型: $COLL_TYPE"
|
||||
echo " 循环功能: $LOAN_LOOP"
|
||||
else
|
||||
print_result "抵质押信息正确保存" "1"
|
||||
fi
|
||||
|
||||
# ============================================================
|
||||
# 步骤 8: 测试最小必填字段
|
||||
# ============================================================
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "步骤 8: 测试最小必填字段"
|
||||
echo "=========================================="
|
||||
|
||||
RESPONSE=$(curl -s -X POST "$PERSONAL_CREATE_URL" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"custIsn": "TEST006",
|
||||
"guarType": "质押",
|
||||
"applyAmt": "100000"
|
||||
}')
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user