use reqwest::Client; use serde_json::json; const API_BASE: &str = "http://localhost:8080"; #[tokio::test] async fn test_health_endpoint() { let client = Client::new(); let response = client .get(format!("{}/health", API_BASE)) .send() .await; // 如果服务器未运行,测试跳过 if response.is_err() { println!("服务器未运行,跳过集成测试"); return; } let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); let body: serde_json::Value = response.json().await.expect("mainnet: handle error"); assert_eq!(body["status"], "ok"); } #[tokio::test] async fn test_root_endpoint() { let client = Client::new(); let response = client .get(API_BASE) .send() .await; if response.is_err() { println!("服务器未运行,跳过集成测试"); return; } let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); } #[tokio::test] async fn test_wallet_balance_validation() { let client = Client::new(); // 测试无效地址 let response = client .get(format!("{}/api/wallet/balance/invalid", API_BASE)) .send() .await; if response.is_err() { println!("服务器未运行,跳过集成测试"); return; } let response = response.expect("mainnet: handle error"); // 应该返回400或500错误 assert!(response.status().is_client_error() || response.status().is_server_error()); } #[tokio::test] async fn test_transfer_validation() { let client = Client::new(); // 测试无效的转账请求 let invalid_request = json!({ "from": "short", "to": "short", "amount": "", "asset": "", "signature": "" }); let response = client .post(format!("{}/api/wallet/transfer", API_BASE)) .json(&invalid_request) .send() .await; if response.is_err() { println!("服务器未运行,跳过集成测试"); return; } let response = response.expect("mainnet: handle error"); // 应该返回验证错误 assert!(response.status().is_client_error()); } #[tokio::test] async fn test_exchange_assets_endpoint() { let client = Client::new(); let response = client .get(format!("{}/api/exchange/assets", API_BASE)) .send() .await; if response.is_err() { println!("服务器未运行,跳过集成测试"); return; } let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); let body: serde_json::Value = response.json().await.expect("mainnet: handle error"); assert!(body.is_array()); }