better response handling

This commit is contained in:
benedettadavico
2025-04-08 16:59:30 +02:00
parent 9225e0a630
commit 49d203e18d
9 changed files with 39 additions and 43 deletions
+3 -4
View File
@@ -1,11 +1,10 @@
use tokio;
mod utils;
use utils::{base_url, test_client, validate_json_response};
#[tokio::test]
async fn test_health() {
let url = format!("{}/v1/api-status/health", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert_eq!(json["status"], "up", "Expected status is 'up'");
@@ -14,7 +13,7 @@ async fn test_health() {
#[tokio::test]
async fn test_build_information() {
let url = format!("{}/v1/api-status/build-information", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
@@ -28,7 +27,7 @@ async fn test_build_information() {
// async fn test_signer_information() {
// let url = format!("{}/v1/api-status/signer-information", base_url());
// println!("{}", url);
// let res = test_client().get(&url).send().await.unwrap();
// let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
// assert!(res.status().is_success(), "Expected 2xx but got {}", res.status());
// let json: Value = res.json().await.unwrap_or_else(|err| panic!("Invalid JSON response: {}", err));
@@ -1,11 +1,10 @@
mod utils;
use tokio;
use utils::{base_url, test_client, validate_json_response};
#[tokio::test]
async fn test_get_circulating_supply() {
let url = format!("{}/v1/circulating-supply", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
@@ -20,7 +19,7 @@ async fn test_get_circulating_supply_value() {
"{}/v1/circulating-supply/circulating-supply-value",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
@@ -34,7 +33,7 @@ async fn test_get_circulating_supply_value() {
#[tokio::test]
async fn test_get_total_supply_value() {
let url = format!("{}/v1/circulating-supply/total-supply-value", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(json.is_number(), "Expected a number for total supply value");
+2 -3
View File
@@ -1,11 +1,10 @@
mod utils;
use tokio;
use utils::{base_url, test_client, validate_json_response};
#[tokio::test]
async fn test_get_current_epoch() {
let url = format!("{}/v1/epoch/current", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(json.get("id").is_some(), "Expected a value for 'id'");
@@ -22,7 +21,7 @@ async fn test_get_current_epoch() {
#[tokio::test]
async fn test_get_reward_params() {
let url = format!("{}/v1/epoch/reward_params", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let interval = json
+4 -5
View File
@@ -1,11 +1,10 @@
mod utils;
use tokio;
use utils::{base_url, test_client, validate_json_response};
#[tokio::test]
async fn test_get_chain_status() {
let url = format!("{}/v1/network/chain-status", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let block_header = json
@@ -28,7 +27,7 @@ async fn test_get_chain_status() {
#[tokio::test]
async fn test_get_network_details() {
let url = format!("{}/v1/network/details", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
@@ -48,7 +47,7 @@ async fn test_get_network_details() {
#[tokio::test]
async fn test_get_nym_contracts() {
let url = format!("{}/v1/network/nym-contracts", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
@@ -64,7 +63,7 @@ async fn test_get_nym_contracts() {
#[tokio::test]
async fn test_get_nym_contracts_detailed() {
let url = format!("{}/v1/network/nym-contracts-detailed", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let mixnet_contract = json
+8 -9
View File
@@ -1,12 +1,11 @@
mod utils;
use chrono::Utc;
use tokio;
use utils::{base_url, get_any_node_id, test_client, validate_json_response};
#[tokio::test]
async fn test_get_bonded_nodes() {
let url = format!("{}/v1/nym-nodes/bonded", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let data = json.get("data").expect("Expected a value for 'data' field");
@@ -20,7 +19,7 @@ async fn test_get_bonded_nodes() {
#[tokio::test]
async fn test_get_described_nodes() {
let url = format!("{}/v1/nym-nodes/described", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let data = json.get("data").expect("Expected a value for 'data' field");
@@ -35,14 +34,14 @@ async fn test_get_described_nodes() {
// #[tokio::test]
// async fn test_get_noise() {
// let url = format!("{}/v1/nym-nodes/noise", base_url());
// let res = test_client().get(&url).send().await.unwrap();
// let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
// let json = validate_json_response(res).await;
// }
#[tokio::test]
async fn test_get_rewarded_set() {
let url = format!("{}/v1/nym-nodes/rewarded-set", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let exit_gateways = json
.get("exit_gateways")
@@ -63,7 +62,7 @@ async fn test_get_annotation_for_node() {
let id = get_any_node_id().await;
println!("Using node_id: {}", id);
let url = format!("{}/v1/nym-nodes/annotation/{}", base_url(), id);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let annotation = json
.get("annotation")
@@ -98,7 +97,7 @@ async fn test_get_historical_performance() {
async fn test_get_performance_history() {
let id = get_any_node_id().await;
let url = format!("{}/v1/nym-nodes/performance-history/{}", base_url(), id);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let data = json
.get("history")
@@ -116,7 +115,7 @@ async fn test_get_performance_history() {
async fn test_get_performance() {
let id = get_any_node_id().await;
let url = format!("{}/v1/nym-nodes/performance/{}", base_url(), id);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
assert!(
json.get("node_id").is_some(),
@@ -132,7 +131,7 @@ async fn test_get_performance() {
async fn test_get_uptime_history() {
let id = get_any_node_id().await;
let url = format!("{}/v1/nym-nodes/uptime-history/{}", base_url(), id);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json = validate_json_response(res).await;
let data = json
.get("history")
+1 -2
View File
@@ -1,12 +1,11 @@
mod utils;
use serde_json::Value;
use tokio;
use utils::{base_url, test_client};
#[tokio::test]
async fn test_get_config_score_details() {
let url = format!("{}/v1/status/config-score-details", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 200 OK, got {}",
@@ -1,12 +1,11 @@
mod utils;
use serde_json::Value;
use tokio;
use utils::{base_url, test_client};
#[tokio::test]
async fn test_get_skimmed_nodes_active() {
let url = format!("{}/v1/unstable/nym-nodes/skimmed/active", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -32,7 +31,7 @@ async fn test_get_skimmed_active_mixnodes() {
"{}/v1/unstable/nym-nodes/skimmed/mixnodes/active",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -59,7 +58,7 @@ async fn test_get_skimmed_active_mixnodes() {
#[tokio::test]
async fn test_get_skimmed_all_mixnodes() {
let url = format!("{}/v1/unstable/nym-nodes/skimmed/mixnodes/all", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -89,7 +88,7 @@ async fn test_get_skimmed_active_exit_gateways() {
"{}/v1/unstable/nym-nodes/skimmed/exit-gateways/active",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -119,7 +118,7 @@ async fn test_get_skimmed_all_exit_gateways() {
"{}/v1/unstable/nym-nodes/skimmed/exit-gateways/all",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -149,7 +148,7 @@ async fn test_get_skimmed_active_entry_gateways() {
"{}/v1/unstable/nym-nodes/skimmed/entry-gateways/active",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -179,7 +178,7 @@ async fn test_get_skimmed_all_entry_gateways() {
"{}/v1/unstable/nym-nodes/skimmed/entry-gateways/all",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
+3 -4
View File
@@ -1,6 +1,5 @@
mod utils;
use serde_json::Value;
use tokio;
use utils::{base_url, get_gateway_identity_key, get_mixnode_node_id, test_client};
#[tokio::test]
@@ -11,7 +10,7 @@ async fn test_get_gateway_unstable_test_results() {
base_url(),
identity
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -52,7 +51,7 @@ async fn test_get_mixnode_unstable_test_results() {
base_url(),
mix_id
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
@@ -91,7 +90,7 @@ async fn test_get_latest_network_monitor_run_details() {
"{}/v1/status/network-monitor/unstable/run/latest/details",
base_url()
);
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
assert!(
res.status().is_success(),
"Expected 2xx but got {}",
+8 -4
View File
@@ -10,7 +10,7 @@ pub fn test_client() -> Client {
pub fn base_url() -> String {
dotenv().ok();
std::env::var("NYM_API").unwrap_or_else(|err| {
std::env::var("NYM_API").unwrap_or_else(|_err| {
std::env::var("NYM_API")
.unwrap_or_else(|_| panic!("Couldn't find NYM_API env var"))
.trim_end_matches('/')
@@ -18,6 +18,7 @@ pub fn base_url() -> String {
})
}
#[allow(dead_code)]
pub async fn validate_json_response(res: Response) -> Value {
assert!(
res.status().is_success(),
@@ -31,9 +32,10 @@ pub async fn validate_json_response(res: Response) -> Value {
json
}
#[allow(dead_code)]
pub async fn get_any_node_id() -> String {
let url = format!("{}/v1/nym-nodes/bonded", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json: Value = res.json().await.unwrap();
json.get("data")
@@ -47,9 +49,10 @@ pub async fn get_any_node_id() -> String {
.to_string()
}
#[allow(dead_code)]
pub async fn get_mixnode_node_id() -> u64 {
let url = format!("{}/v1/nym-nodes/described", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json: Value = res.json().await.unwrap();
json.get("data")
@@ -69,9 +72,10 @@ pub async fn get_mixnode_node_id() -> u64 {
.expect("Unable to find mixnode node id")
}
#[allow(dead_code)]
pub async fn get_gateway_identity_key() -> String {
let url = format!("{}/v1/nym-nodes/described", base_url());
let res = test_client().get(&url).send().await.unwrap();
let res = test_client().get(&url).send().await.unwrap_or_else(|err| panic!("Failed to send request to {}: {}", url, err));
let json: Value = res.json().await.unwrap();
json.get("data")