ic-query 0.55.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::sns::{FixtureSnsDiscoverySource, GOVERNANCE_A, INDEX_A, ROOT_A};
use crate::sns::report::tests::*;

///
/// FixtureSnsCanisterSource
///
/// Successful SNS Root inventory and health source used by report tests.
///

pub(in crate::sns::report::tests) struct FixtureSnsCanisterSource;

delegate_sns_discovery!(FixtureSnsCanisterSource);

impl SnsCanisterSource for FixtureSnsCanisterSource {
    fn fetch_sns_canisters<'a>(
        &'a self,
        _request: &'a SnsSourceRequest,
        sns: &'a MainnetSns,
    ) -> crate::report::SourceFuture<'a, Result<MainnetSnsCanisterInventory, SnsHostError>> {
        Box::pin(async move {
            assert_eq!(sns.root_canister_id, ROOT_A);
            Ok(MainnetSnsCanisterInventory {
                inventory_method: SnsCanisterMethod::ListSnsCanisters,
                health_method: SnsCanisterMethod::GetSnsCanistersSummary,
                health_call_type: SnsCanisterCallType::IngressUpdate,
                health_update_canister_list: false,
                point_in_time_guaranteed: false,
                canisters: vec![
                    SnsCanisterRow {
                        role: SnsCanisterRole::Extension,
                        canister_id: INDEX_A.to_string(),
                        status: None,
                        module_hash_hex: None,
                        cycles: None,
                        cycle_balance_status: SnsCanisterCycleBalanceStatus::Unavailable,
                        memory_size: None,
                        idle_cycles_burned_per_day: None,
                        controllers: Vec::new(),
                    },
                    SnsCanisterRow {
                        role: SnsCanisterRole::Root,
                        canister_id: ROOT_A.to_string(),
                        status: Some(SnsCanisterStatus::Running),
                        module_hash_hex: Some("01020304".to_string()),
                        cycles: Some("0".to_string()),
                        cycle_balance_status: SnsCanisterCycleBalanceStatus::ReportedZero,
                        memory_size: Some("2000000".to_string()),
                        idle_cycles_burned_per_day: Some("3000".to_string()),
                        controllers: vec![GOVERNANCE_A.to_string()],
                    },
                ],
                health_query_gap: None,
                gaps: vec![SnsCanisterGap {
                    kind: SnsCanisterGapKind::HealthUnsupported,
                    role: SnsCanisterRole::Extension,
                    inventory_canister_id: Some(INDEX_A.to_string()),
                    summary_canister_id: None,
                }],
            })
        })
    }
}