extends Node # API测试脚本 - 验证更新后的接口逻辑 class_name ApiTestScript # 测试用例 var test_cases = [ { "name": "测试网络连接", "operation": "network_test", "method": "get_app_status" }, { "name": "测试发送邮箱验证码", "operation": "send_code", "method": "send_email_verification", "params": ["test@example.com"] }, { "name": "测试邮箱冲突检测", "operation": "send_code", "method": "send_email_verification", "params": ["existing@example.com"] # 假设这个邮箱已存在 }, { "name": "测试登录", "operation": "login", "method": "login", "params": ["testuser", "password123"] }, { "name": "测试注册", "operation": "register", "method": "register", "params": ["newuser", "newpassword123", "新用户", "newuser@example.com", "123456"] } ] func _ready(): print("=== API测试脚本启动 ===") print("测试最新API v1.1.1的接口逻辑和toast显示") # 延迟一下确保NetworkManager已初始化 await get_tree().create_timer(1.0).timeout # 运行测试用例 run_tests() func run_tests(): print("\n🧪 开始运行API测试用例...") for i in range(test_cases.size()): var test_case = test_cases[i] print("\n--- 测试 %d: %s ---" % [i + 1, test_case.name]) await run_single_test(test_case) # 测试间隔 await get_tree().create_timer(2.0).timeout print("\n✅ 所有测试用例执行完成") func run_single_test(test_case: Dictionary): var operation = test_case.operation var method = test_case.method var params = test_case.get("params", []) print("操作类型: ", operation) print("调用方法: ", method) print("参数: ", params) # 创建回调函数 var callback = func(success: bool, data: Dictionary, error_info: Dictionary): handle_test_response(test_case.name, operation, success, data, error_info) # 调用对应的NetworkManager方法 var request_id = "" match method: "get_app_status": request_id = NetworkManager.get_app_status(callback) "send_email_verification": if params.size() > 0: request_id = NetworkManager.send_email_verification(params[0], callback) "login": if params.size() >= 2: request_id = NetworkManager.login(params[0], params[1], callback) "register": if params.size() >= 5: request_id = NetworkManager.register(params[0], params[1], params[2], params[3], params[4], callback) _: print("❌ 未知的测试方法: ", method) return if request_id != "": print("✅ 请求已发送,ID: ", request_id) else: print("❌ 请求发送失败") func handle_test_response(test_name: String, operation: String, success: bool, data: Dictionary, error_info: Dictionary): print("\n=== %s 响应结果 ===" % test_name) print("成功: ", success) print("数据: ", data) print("错误信息: ", error_info) # 使用ResponseHandler处理响应 var result = ResponseHandler.handle_response(operation, success, data, error_info) print("\n--- ResponseHandler处理结果 ---") print("处理成功: ", result.success) print("消息: ", result.message) print("Toast类型: ", result.toast_type) print("是否显示Toast: ", result.should_show_toast) # 模拟Toast显示 if result.should_show_toast: print("🍞 Toast显示: [%s] %s" % [result.toast_type.to_upper(), result.message]) # 检查特殊情况 check_special_cases(data, error_info) func check_special_cases(data: Dictionary, error_info: Dictionary): var response_code = error_info.get("response_code", 0) var error_code = data.get("error_code", "") print("\n--- 特殊情况检查 ---") # 检查409冲突 if response_code == 409: print("✅ 检测到409冲突状态码 - 邮箱冲突检测正常工作") # 检查206测试模式 if response_code == 206 or error_code == "TEST_MODE_ONLY": print("✅ 检测到206测试模式 - 测试模式处理正常工作") if data.has("data") and data.data.has("verification_code"): print("🔑 测试模式验证码: ", data.data.verification_code) # 检查429频率限制 if response_code == 429 or error_code == "TOO_MANY_REQUESTS": print("✅ 检测到429频率限制 - 频率限制处理正常工作") if data.has("throttle_info"): print("⏰ 限制信息: ", data.throttle_info) # 检查其他重要状态码 match response_code: 200: print("✅ 200 成功响应") 201: print("✅ 201 创建成功") 400: print("⚠️ 400 请求参数错误") 401: print("⚠️ 401 认证失败") 404: print("⚠️ 404 资源不存在") 500: print("❌ 500 服务器内部错误") 503: print("❌ 503 服务不可用") # 手动触发测试的方法 func test_email_conflict(): print("\n🧪 手动测试邮箱冲突检测...") var callback = func(success: bool, data: Dictionary, error_info: Dictionary): handle_test_response("邮箱冲突测试", "send_code", success, data, error_info) NetworkManager.send_email_verification("existing@example.com", callback) func test_rate_limit(): print("\n🧪 手动测试频率限制...") var callback = func(success: bool, data: Dictionary, error_info: Dictionary): handle_test_response("频率限制测试", "send_code", success, data, error_info) # 快速发送多个请求来触发频率限制 for i in range(3): NetworkManager.send_email_verification("test@example.com", callback) await get_tree().create_timer(0.1).timeout func test_test_mode(): print("\n🧪 手动测试测试模式...") var callback = func(success: bool, data: Dictionary, error_info: Dictionary): handle_test_response("测试模式测试", "send_code", success, data, error_info) NetworkManager.send_email_verification("testmode@example.com", callback)