ic-query 0.90.0

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

const NODE_ID: &str = "53amq-7hjxu-6lxaj-o2sp6-kmngy-qa22h-b7bo6-oeyyn-fkqnv-7tauf-7qe";
const PROVIDER_ID: &str = "bvcsg-3od6r-jnydw-eysln-aql7w-td5zn-ay5m6-sibd2-jzojt-anwag-mqe";

#[test]
fn list_url_selects_type4_all_statuses_and_optional_provider() {
    let url = cloud_engine_node_list_url(
        "https://ic-api.internetcomputer.org/api/v3/",
        Some(PROVIDER_ID),
    )
    .expect("Type4 node URL");
    assert_eq!(url.path(), "/api/v3/nodes");
    let pairs = url.query_pairs().collect::<Vec<_>>();
    assert_eq!(
        pairs,
        vec![
            ("include_status".into(), "DOWN".into()),
            ("include_status".into(), "UP".into()),
            ("include_status".into(), "DISABLED".into()),
            ("include_status".into(), "DEGRADED".into()),
            ("include_node_reward_type".into(), "Type4".into()),
            ("sort_by".into(), "node_id".into()),
            ("node_provider_id".into(), PROVIDER_ID.into()),
        ]
    );
}

#[test]
fn exact_url_selects_one_node_resource() {
    assert_eq!(
        cloud_engine_node_info_url("https://ic-api.internetcomputer.org/api/v3", NODE_ID)
            .expect("exact node URL")
            .as_str(),
        format!("https://ic-api.internetcomputer.org/api/v3/nodes/{NODE_ID}")
    );
}

#[test]
fn shared_node_wire_preserves_type4_specific_fields() {
    let node: DashboardNode = serde_json::from_str(&format!(
            r#"{{
                "alertname":"",
                "cloud_engine_subnet_id":"nx5oj-b2azr-x3alh-sgf7i-duhfw-bflus-hisa2-5n2oq-tv7sd-haspd-cae",
                "dc_id":"tp1",
                "dc_name":"Tampa",
                "guestos_tee_active":false,
                "guestos_version":"release",
                "ip_address":"2001:db8::1",
                "ipv4_connectivity_status":false,
                "node_hardware_generation":"Gen1",
                "node_id":"{NODE_ID}",
                "node_operator_id":"e3aue-mkha2-6zddy-xbmd7-3oybi-3nfoh-3bwgn-izbjn-uuqx2-ykc2z-7qe",
                "node_provider_id":"{PROVIDER_ID}",
                "node_provider_name":"DFINITY Stiftung",
                "node_reward_type":"Type4",
                "node_type":"UNASSIGNED",
                "owner":"Flexential",
                "region":"North America,US,Florida",
                "status":"UP",
                "subnet_id":null,
                "additive":true
            }}"#
        ))
        .expect("Type4 node wire");
    let row = node.into_public();
    assert_eq!(row.node_reward_type, "Type4");
    assert!(row.cloud_engine_subnet_id.is_some());
    assert_eq!(row.subnet_id, None);
}