112 lines
2.8 KiB
Rust
112 lines
2.8 KiB
Rust
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());
|
|
}
|