Files
nym/nym-api/tests/public-api/unstable_status.rs
T
Jędrzej Stuczyński e95aca715c feat: use ShutdownToken (CancellationToken inside) for nym-api (#5997)
* make nym-api use ShutdownToken instead of TaskClient

* ignore public-api tests if env is not set

* removed default features to avoid pulling in openssl
2025-09-08 09:45:28 +01:00

97 lines
2.9 KiB
Rust

use crate::utils::{
base_url, get_gateway_identity_key, get_mixnode_node_id, make_request, test_client,
validate_json_response,
};
#[tokio::test]
#[test_with::env(NYM_API)]
async fn test_get_gateway_unstable_test_results() -> Result<(), String> {
let identity = get_gateway_identity_key().await?;
let url = format!(
"{}/v1/status/gateways/unstable/{}/test-results",
base_url()?,
identity
);
let res = make_request(&url).await?;
let json = validate_json_response(res).await?;
let data_array = json
.get("data")
.and_then(|v| v.as_array())
.ok_or("Missing or invalid 'data' array")?;
assert!(!data_array.is_empty(), "'data' array is empty");
let gateway = data_array[0]
.get("test_routes")
.and_then(|r| r.get("gateway"))
.ok_or("Expected a value for 'test_routes.gateway'")?;
assert!(
gateway.get("node_id").is_some(),
"Expected a value for 'node_id' in gateway"
);
assert!(
gateway.get("identity_key").is_some(),
"Expected a value for 'identity_key' in gateway"
);
Ok(())
}
#[tokio::test]
#[test_with::env(NYM_API)]
async fn test_get_mixnode_unstable_test_results() -> Result<(), String> {
let mix_id = get_mixnode_node_id().await?;
let url = format!(
"{}/v1/status/mixnodes/unstable/{}/test-results",
base_url()?,
mix_id
);
let res = make_request(&url).await?;
let json = validate_json_response(res).await?;
let data_array = json
.get("data")
.and_then(|v| v.as_array())
.ok_or("Missing or invalid 'data' array")?;
assert!(!data_array.is_empty(), "'data' array is empty");
let layer3 = data_array[0]
.get("test_routes")
.and_then(|r| r.get("layer3"))
.ok_or("Expected a value for 'test_routes.layer3'")?;
assert!(
layer3.get("node_id").is_some(),
"Expected a value for 'node_id' in layer3"
);
assert!(
layer3.get("identity_key").is_some(),
"Expected a value for 'identity_key' in layer3"
);
Ok(())
}
#[tokio::test]
#[test_with::env(NYM_API)]
async fn test_get_latest_network_monitor_run_details() -> Result<(), String> {
let url = format!(
"{}/v1/status/network-monitor/unstable/run/latest/details",
base_url()?
);
let res = make_request(&url).await?;
let json = validate_json_response(res).await?;
let monitor_run_id = json
.get("monitor_run_id")
.and_then(|v| v.as_u64())
.ok_or("Missing or invalid 'monitor_run_id'")?;
let follow_up_url = format!(
"{}/v1/status/network-monitor/unstable/run/{}/details",
base_url()?,
monitor_run_id
);
let follow_up_res = test_client()
.get(&follow_up_url)
.send()
.await
.map_err(|err| format!("Failed to follow up with URL {follow_up_url}: {err}"))?;
assert!(follow_up_res.status().is_success());
Ok(())
}