#!/bin/bash # API测试脚本 BASE_URL="http://localhost:8080" echo "==========================================" echo "API功能测试脚本" echo "==========================================" echo "" # 检查服务是否运行 echo "1. 检查服务健康状态..." HEALTH=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/health" 2>/dev/null) if [ "$HEALTH" = "200" ]; then echo "✅ 服务运行正常" curl -s "$BASE_URL/health" | jq '.' 2>/dev/null || curl -s "$BASE_URL/health" else echo "❌ 服务未运行 (HTTP $HEALTH)" echo "请先启动后端服务: cargo run" exit 1 fi echo "" # 测试账户列表(分页) echo "2. 测试账户列表分页..." curl -s "$BASE_URL/api/v1/physical-accounts?page=1&page_size=10" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?page=1&page_size=10" echo "" # 测试账户列表筛选 echo "3. 测试账户列表筛选(状态)..." curl -s "$BASE_URL/api/v1/physical-accounts?status=active" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?status=active" echo "" echo "4. 测试账户列表筛选(关键词)..." curl -s "$BASE_URL/api/v1/physical-accounts?keyword=test" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?keyword=test" echo "" # 测试创建账户 echo "5. 测试创建账户..." CREATE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts" \ -H "Content-Type: application/json" \ -d '{ "account_no": "TEST001", "account_name": "测试账户", "bank_code": "ICBC", "bank_name": "工商银行" }') echo "$CREATE_RESPONSE" | jq '.' 2>/dev/null || echo "$CREATE_RESPONSE" echo "" # 提取账户ID(如果创建成功) ACCOUNT_ID=$(echo "$CREATE_RESPONSE" | jq -r '.data.id // empty' 2>/dev/null) if [ -z "$ACCOUNT_ID" ]; then ACCOUNT_ID=1 # 使用默认ID fi # 测试获取账户详情 echo "6. 测试获取账户详情(ID: $ACCOUNT_ID)..." curl -s "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID" echo "" # 测试冻结金额 echo "7. 测试冻结账户金额..." FREEZE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID/freeze" \ -H "Content-Type: application/json" \ -d '{"amount": 100.00}') echo "$FREEZE_RESPONSE" | jq '.' 2>/dev/null || echo "$FREEZE_RESPONSE" echo "" # 测试解冻金额 echo "8. 测试解冻账户金额..." UNFREEZE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID/unfreeze" \ -H "Content-Type: application/json" \ -d '{"amount": 50.00}') echo "$UNFREEZE_RESPONSE" | jq '.' 2>/dev/null || echo "$UNFREEZE_RESPONSE" echo "" # 测试三账校验 echo "9. 测试三账校验..." curl -s "$BASE_URL/api/v1/reconciliation/three-account/$ACCOUNT_ID" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/reconciliation/three-account/$ACCOUNT_ID" echo "" echo "==========================================" echo "测试完成" echo "=========================================="