NAC_Blockchain/nac-api-server/tests/integration_test.rs

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());
}