|
|
|
@@ -0,0 +1,182 @@ |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
# 渠道定价功能端到端测试脚本 |
|
|
|
# 使用方法: ./test_channel_pricing.sh <admin_token> |
|
|
|
|
|
|
|
BASE_URL="http://localhost:3000" |
|
|
|
ADMIN_TOKEN="${1:-}" |
|
|
|
|
|
|
|
if [ -z "$ADMIN_TOKEN" ]; then |
|
|
|
echo "错误: 请提供管理员 token" |
|
|
|
echo "使用方法: ./test_channel_pricing.sh <admin_token>" |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
|
|
|
|
# 颜色输出 |
|
|
|
RED='\033[0;31m' |
|
|
|
GREEN='\033[0;32m' |
|
|
|
YELLOW='\033[1;33m' |
|
|
|
NC='\033[0m' # No Color |
|
|
|
|
|
|
|
pass_count=0 |
|
|
|
fail_count=0 |
|
|
|
|
|
|
|
check_success() { |
|
|
|
local result="$1" |
|
|
|
local test_name="$2" |
|
|
|
if echo "$result" | grep -q '"success":true'; then |
|
|
|
echo -e "${GREEN}✓ $test_name${NC}" |
|
|
|
((pass_count++)) |
|
|
|
return 0 |
|
|
|
else |
|
|
|
echo -e "${RED}✗ $test_name${NC}" |
|
|
|
echo " 响应: $result" |
|
|
|
((fail_count++)) |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
check_failure() { |
|
|
|
local result="$1" |
|
|
|
local test_name="$2" |
|
|
|
if echo "$result" | grep -q '"success":false'; then |
|
|
|
echo -e "${GREEN}✓ $test_name (预期失败)${NC}" |
|
|
|
((pass_count++)) |
|
|
|
return 0 |
|
|
|
else |
|
|
|
echo -e "${RED}✗ $test_name (应该失败但成功了)${NC}" |
|
|
|
((fail_count++)) |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
echo "======================================" |
|
|
|
echo " 渠道定价功能端到端测试" |
|
|
|
echo "======================================" |
|
|
|
echo "" |
|
|
|
|
|
|
|
# ========== 模块 1: 定价标签 ========== |
|
|
|
echo -e "${YELLOW}【模块 1: 定价标签 API】${NC}" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-1.1 创建定价标签..." |
|
|
|
RESULT=$(curl -s -X POST "$BASE_URL/api/pricing_tag/" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"name":"E2E测试标签","color":"#52c41a","description":"端到端测试","sort_order":1}') |
|
|
|
check_success "$RESULT" "创建定价标签" |
|
|
|
TAG_ID=$(echo "$RESULT" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-1.2 获取所有标签..." |
|
|
|
RESULT=$(curl -s "$BASE_URL/api/pricing_tag/" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "获取所有标签" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-1.3 创建重复名称标签 (应失败)..." |
|
|
|
RESULT=$(curl -s -X POST "$BASE_URL/api/pricing_tag/" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"name":"E2E测试标签","color":"#ff0000"}') |
|
|
|
check_failure "$RESULT" "创建重复名称标签" |
|
|
|
|
|
|
|
if [ -n "$TAG_ID" ]; then |
|
|
|
echo "" |
|
|
|
echo "TC-1.4 更新标签..." |
|
|
|
RESULT=$(curl -s -X PUT "$BASE_URL/api/pricing_tag/$TAG_ID" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"name":"E2E测试标签-更新","color":"#1890ff","description":"更新后"}') |
|
|
|
check_success "$RESULT" "更新标签" |
|
|
|
fi |
|
|
|
|
|
|
|
# ========== 模块 2: 渠道定价 ========== |
|
|
|
echo "" |
|
|
|
echo -e "${YELLOW}【模块 2: 渠道定价 API】${NC}" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.1 创建渠道定价 (按量计费)..." |
|
|
|
RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"model_name":"e2e-test-model","channel_id":1,"quota_type":0,"model_ratio":10,"completion_ratio":1.5,"model_price":0}') |
|
|
|
check_success "$RESULT" "创建渠道定价(按量)" |
|
|
|
PRICING_ID=$(echo "$RESULT" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.2 创建渠道定价 (按次计费)..." |
|
|
|
RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"model_name":"e2e-test-model-call","channel_id":1,"quota_type":1,"model_ratio":0,"completion_ratio":0,"model_price":0.05}') |
|
|
|
check_success "$RESULT" "创建渠道定价(按次)" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.3 获取所有渠道定价..." |
|
|
|
RESULT=$(curl -s "$BASE_URL/api/channel_pricing/?p=1&page_size=10" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "获取所有渠道定价" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.4 获取指定模型的渠道定价..." |
|
|
|
RESULT=$(curl -s "$BASE_URL/api/channel_pricing/model/e2e-test-model" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "获取指定模型的渠道定价" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.5 获取带标签的渠道定价..." |
|
|
|
RESULT=$(curl -s "$BASE_URL/api/channel_pricing/with_tags?p=1&page_size=10" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "获取带标签的渠道定价" |
|
|
|
|
|
|
|
echo "" |
|
|
|
echo "TC-2.6 批量创建渠道定价..." |
|
|
|
RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/batch" \ |
|
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \ |
|
|
|
-H "Content-Type: application/json" \ |
|
|
|
-d '{"items":[{"model_name":"batch-model-1","channel_id":1,"quota_type":0,"model_ratio":5},{"model_name":"batch-model-2","channel_id":1,"quota_type":0,"model_ratio":8}]}') |
|
|
|
check_success "$RESULT" "批量创建渠道定价" |
|
|
|
|
|
|
|
# ========== 模块 3: 清理测试数据 ========== |
|
|
|
echo "" |
|
|
|
echo -e "${YELLOW}【清理测试数据】${NC}" |
|
|
|
|
|
|
|
if [ -n "$TAG_ID" ]; then |
|
|
|
echo "" |
|
|
|
echo "删除测试标签..." |
|
|
|
RESULT=$(curl -s -X DELETE "$BASE_URL/api/pricing_tag/$TAG_ID" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "删除测试标签" |
|
|
|
fi |
|
|
|
|
|
|
|
if [ -n "$PRICING_ID" ]; then |
|
|
|
echo "" |
|
|
|
echo "删除测试渠道定价..." |
|
|
|
RESULT=$(curl -s -X DELETE "$BASE_URL/api/channel_pricing/$PRICING_ID" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
check_success "$RESULT" "删除测试渠道定价" |
|
|
|
fi |
|
|
|
|
|
|
|
# 删除其他测试数据 |
|
|
|
echo "" |
|
|
|
echo "清理批量创建的测试数据..." |
|
|
|
for model in "batch-model-1" "batch-model-2" "e2e-test-model-call"; do |
|
|
|
RESULT=$(curl -s "$BASE_URL/api/channel_pricing/model/$model" -H "Authorization: Bearer $ADMIN_TOKEN") |
|
|
|
IDS=$(echo "$RESULT" | grep -o '"id":[0-9]*' | grep -o '[0-9]*') |
|
|
|
for id in $IDS; do |
|
|
|
curl -s -X DELETE "$BASE_URL/api/channel_pricing/$id" -H "Authorization: Bearer $ADMIN_TOKEN" > /dev/null |
|
|
|
done |
|
|
|
done |
|
|
|
echo -e "${GREEN}✓ 清理完成${NC}" |
|
|
|
|
|
|
|
# ========== 测试总结 ========== |
|
|
|
echo "" |
|
|
|
echo "======================================" |
|
|
|
echo " 测试结果汇总" |
|
|
|
echo "======================================" |
|
|
|
echo -e "通过: ${GREEN}$pass_count${NC}" |
|
|
|
echo -e "失败: ${RED}$fail_count${NC}" |
|
|
|
echo "" |
|
|
|
|
|
|
|
if [ $fail_count -eq 0 ]; then |
|
|
|
echo -e "${GREEN}所有测试通过! ✓${NC}" |
|
|
|
exit 0 |
|
|
|
else |
|
|
|
echo -e "${RED}有 $fail_count 个测试失败${NC}" |
|
|
|
exit 1 |
|
|
|
fi |