#!/bin/bash # 利率定价流程执行利率接口测试脚本 # 测试环境: http://localhost:8080 BASE_URL="http://localhost:8080" LOGIN_URL="${BASE_URL}/login" WORKFLOW_URL="${BASE_URL}/loanPricing/workflow" # 测试账号 USERNAME="admin" PASSWORD="admin123" # 测试流水号(从数据库获取) SERIAL_NUM="20260121170730386" # 颜色输出 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo "==========================================" echo "利率定价流程执行利率接口测试" echo "==========================================" echo "" # 步骤1: 登录获取 Token (使用测试接口,无需验证码) echo -e "${YELLOW}步骤1: 登录获取 Token (使用测试接口)${NC}" LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/login/test" \ -H "Content-Type: application/json" \ -d "{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}") TOKEN=$(echo $LOGIN_RESPONSE | grep -o '"token":"[^"]*"' | cut -d'"' -f4) if [ -z "$TOKEN" ]; then echo -e "${RED}登录失败,无法获取 Token${NC}" echo "响应: $LOGIN_RESPONSE" exit 1 fi echo -e "${GREEN}登录成功,Token: ${TOKEN:0:20}...${NC}" echo "" # 步骤2: 查询当前流程详情 echo -e "${YELLOW}步骤2: 查询流程详情 (GET ${WORKFLOW_URL}/${SERIAL_NUM})${NC}" DETAILS_RESPONSE=$(curl -s -X GET "${WORKFLOW_URL}/${SERIAL_NUM}" \ -H "Authorization: Bearer ${TOKEN}") echo "$DETAILS_RESPONSE" | python -m json.tool 2>/dev/null || echo "$DETAILS_RESPONSE" echo "" # 步骤3: 设定执行利率 echo -e "${YELLOW}步骤3: 设定执行利率 (PUT ${WORKFLOW_URL}/${SERIAL_NUM}/executeRate)${NC}" SET_RATE_RESPONSE=$(curl -s -X PUT "${WORKFLOW_URL}/${SERIAL_NUM}/executeRate" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"executeRate":"4.20"}') echo "$SET_RATE_RESPONSE" | python -m json.tool 2>/dev/null || echo "$SET_RATE_RESPONSE" # 检查响应 CODE=$(echo $SET_RATE_RESPONSE | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" = "200" ]; then echo -e "${GREEN}✓ 设定执行利率成功${NC}" else echo -e "${RED}✗ 设定执行利率失败${NC}" fi echo "" # 步骤4: 再次查询详情验证 executeRate 字段 echo -e "${YELLOW}步骤4: 再次查询详情验证 executeRate 字段${NC}" DETAILS_RESPONSE2=$(curl -s -X GET "${WORKFLOW_URL}/${SERIAL_NUM}" \ -H "Authorization: Bearer ${TOKEN}") echo "$DETAILS_RESPONSE2" | python -m json.tool 2>/dev/null || echo "$DETAILS_RESPONSE2" # 检查 executeRate 字段 EXECUTE_RATE=$(echo $DETAILS_RESPONSE2 | grep -o '"executeRate":"[^"]*"' | cut -d'"' -f4) if [ "$EXECUTE_RATE" = "4.20" ]; then echo -e "${GREEN}✓ executeRate 字段正确返回: ${EXECUTE_RATE}${NC}" else echo -e "${RED}✗ executeRate 字段值不正确${NC}" fi echo "" # 步骤5: 更新执行利率(验证可修改) echo -e "${YELLOW}步骤5: 更新执行利率为 3.85${NC}" UPDATE_RATE_RESPONSE=$(curl -s -X PUT "${WORKFLOW_URL}/${SERIAL_NUM}/executeRate" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"executeRate":"3.85"}') echo "$UPDATE_RATE_RESPONSE" | python -m json.tool 2>/dev/null || echo "$UPDATE_RATE_RESPONSE" CODE=$(echo $UPDATE_RATE_RESPONSE | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" = "200" ]; then echo -e "${GREEN}✓ 更新执行利率成功${NC}" else echo -e "${RED}✗ 更新执行利率失败${NC}" fi echo "" # 步骤6: 测试不存在的流水号 echo -e "${YELLOW}步骤6: 测试不存在的流水号 (404场景)${NC}" NOT_FOUND_RESPONSE=$(curl -s -X PUT "${WORKFLOW_URL}/99999999999999999/executeRate" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"executeRate":"4.20"}') echo "$NOT_FOUND_RESPONSE" | python -m json.tool 2>/dev/null || echo "$NOT_FOUND_RESPONSE" CODE=$(echo $NOT_FOUND_RESPONSE | grep -o '"code":[0-9]*' | cut -d':' -f2) MSG=$(echo $NOT_FOUND_RESPONSE | grep -o '"msg":"[^"]*"' | cut -d'"' -f4) if [ "$CODE" != "200" ]; then echo -e "${GREEN}✓ 不存在的流水号正确返回错误: ${MSG}${NC}" else echo -e "${RED}✗ 应该返回错误但返回了成功${NC}" fi echo "" # 步骤7: 测试空值 echo -e "${YELLOW}步骤7: 测试设定空值${NC}" NULL_RATE_RESPONSE=$(curl -s -X PUT "${WORKFLOW_URL}/${SERIAL_NUM}/executeRate" \ -H "Authorization: Bearer ${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"executeRate":null}') echo "$NULL_RATE_RESPONSE" | python -m json.tool 2>/dev/null || echo "$NULL_RATE_RESPONSE" CODE=$(echo $NULL_RATE_RESPONSE | grep -o '"code":[0-9]*' | cut -d':' -f2) if [ "$CODE" = "200" ]; then echo -e "${GREEN}✓ 空值设定成功${NC}" else echo -e "${YELLOW}空值设定响应: ${MSG}${NC}" fi echo "" echo "==========================================" echo "测试完成" echo "=========================================="