ic-query 0.93.1

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::*;

#[test]
fn node_status_url_appends_one_unfiltered_resource() {
    for endpoint in [
        "https://ic-api.internetcomputer.org/api/v3",
        "https://ic-api.internetcomputer.org/api/v3/",
    ] {
        let url = node_status_url(endpoint).expect("node-status URL");
        assert_eq!(
            url.as_str(),
            "https://ic-api.internetcomputer.org/api/v3/nodes"
        );
        assert!(url.query().is_none());
    }
}

#[test]
fn node_wire_preserves_status_evidence_and_ignores_additive_fields() {
    let wire: DashboardNodes = serde_json::from_str(
        r#"{
                "nodes": [{
                    "alertname": "IC_Node_HostVersionBehind",
                    "cloud_engine_subnet_id": null,
                    "dc_id": "fm1",
                    "dc_name": "Fremont",
                    "guestos_tee_active": true,
                    "guestos_version": "abc",
                    "ip_address": "2001:db8::1",
                    "ipv4_connectivity_status": true,
                    "node_hardware_generation": null,
                    "node_id": "aaaaa-aa",
                    "node_operator_id": "2vxsx-fae",
                    "node_provider_id": "rrkah-fqaaa-aaaaa-aaaaq-cai",
                    "node_provider_name": "Provider",
                    "node_reward_type": "Type3dot1",
                    "node_type": "REPLICA",
                    "owner": "Owner",
                    "region": "North America,US,California",
                    "status": "DEGRADED",
                    "subnet_id": "ryjl3-tyaaa-aaaaa-aaaba-cai",
                    "future_field": {"value": 1}
                }],
                "future_top_level": true
            }"#,
    )
    .expect("current node payload");

    let row = wire
        .nodes
        .into_iter()
        .next()
        .expect("one row")
        .into_public();
    assert_eq!(row.status, "DEGRADED");
    assert_eq!(row.alert_name.as_deref(), Some("IC_Node_HostVersionBehind"));
    assert_eq!(row.node_hardware_generation, None);
}