ic-query 0.91.0

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

const VERSION_ID: &str = "e3d101b22ae3fa02aca737f9fb96cc6c4ca83ac3";

#[test]
fn replica_version_urls_preserve_explicit_bounds_and_exact_target() {
    let query = IcReplicaVersionListQuery::new(25, 50, Some(438));
    assert_eq!(
        replica_version_list_url("https://ic-api.internetcomputer.org/api/v3/", &query,)
            .expect("list URL")
            .as_str(),
        "https://ic-api.internetcomputer.org/api/v3/subnet-replica-versions?limit=25&offset=50&sort_by=-executed_timestamp_seconds&include_status=EXECUTED&include_status=OPEN&include_status=ADOPTED&max_proposal_index=438"
    );
    assert_eq!(
        replica_version_info_url("https://ic-api.internetcomputer.org/api/v3", VERSION_ID,)
            .expect("info URL")
            .as_str(),
        format!("https://ic-api.internetcomputer.org/api/v3/subnet-replica-versions/{VERSION_ID}")
    );
}

#[test]
fn list_wire_preserves_open_status_and_discards_only_list_summary() {
    let wire: DashboardReplicaVersionList = serde_json::from_str(&format!(
        r#"{{
                "data": [{{
                    "executed_timestamp_seconds": 0,
                    "proposal_id": 143406,
                    "replica_version_id": "{VERSION_ID}",
                    "status": "OPEN",
                    "subnets": [{{
                        "subnet_id": "aaaaa-aa",
                        "proposal_id": 143400,
                        "executed_timestamp_seconds": 100,
                        "future_field": "ignored"
                    }}],
                    "summary": "large detail is available through info",
                    "title": "Elect release",
                    "url": "https://forum.dfinity.org/t/release/1"
                }}],
                "max_proposal_index": 2,
                "total_proposals": 2
            }}"#
    ))
    .expect("list wire");
    let source = wire
        .into_source_data(
            &IcSourceRequest::new("https://example.com", "2026-08-08T00:00:00Z", "test"),
            &IcReplicaVersionListQuery::new(1, 0, None),
        )
        .expect("source data");

    assert_eq!(source.rows[0].status, IcReplicaVersionStatus::Open);
    assert_eq!(source.rows[0].executed_timestamp_seconds, 0);
    assert_eq!(source.resolved_max_proposal_index, 2);
    assert_eq!(source.rows[0].subnets.len(), 1);
    assert_eq!(
        source.rows[0].subnets[0],
        IcReplicaVersionSubnetRollout {
            subnet_id: "aaaaa-aa".to_string(),
            proposal_id: 143_400,
            executed_timestamp_seconds: 100,
        }
    );
}

#[test]
fn unknown_list_status_is_rejected() {
    assert!(matches!(
        replica_version_status("FAILED"),
        Err(IcHostError::InvalidSourceData { .. })
    ));
}