From 183b1ce70e79f2d568d052996981e157fb95bb64 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Fri, 12 Sep 2025 15:11:42 +0200 Subject: [PATCH 1/8] chore(ci): bump PocketIC to v10.0.0 --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- scripts/run-integration-tests.sh | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4224655ce..2213513e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -611,9 +611,9 @@ dependencies = [ [[package]] name = "candid" -version = "0.10.14" +version = "0.10.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d90f5a1426d0489283a0bd5da9ed406fb3e69597e0d823dcb88a1965bb58d2" +checksum = "3ae495fbaf9ee8f4f7898affbd3df85dba8598bfa4ffaca24726c42aa4beb7b1" dependencies = [ "anyhow", "binread", @@ -634,9 +634,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.6.6" +version = "0.10.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de398570c386726e7a59d9887b68763c481477f9a043fb998a2e09d428df1a9" +checksum = "7388be3b345b1a2ad30e529619b4db0d1955852afb56da821fa6a805f7cbf6be" dependencies = [ "lazy_static", "proc-macro2", @@ -3705,9 +3705,9 @@ dependencies = [ [[package]] name = "pocket-ic" -version = "9.0.2" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e523c23bda9dc26ae989aab647b8bd805b54c72a3f2f00d668830d8b490c9c8" +checksum = "4c9b78f339182efb981ceca2ac360aa280609f8d8c785e5a7eeda488f53497a8" dependencies = [ "backoff", "base64 0.13.1", diff --git a/Cargo.toml b/Cargo.toml index e62661c78..59f138910 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ num-bigint = "0.4" # `pocket-ic` should be pinned to an exact version so that the PocketIC server binary version # `POCKET_IC_SERVER_VERSION` defined in `scripts/run-integration-tests.sh` is compatible: # https://docs.google.com/document/d/1VYmHUTjrgbzRHtsAyRrI5cj-gWGs7ktTnutPvUMJioU/edit -pocket-ic = "=9.0.2" +pocket-ic = "=10.0.0" proc-macro2 = "1.0" prometheus = "0.13.3" quote = "1.0" diff --git a/scripts/run-integration-tests.sh b/scripts/run-integration-tests.sh index 3e5436837..f46e72e3a 100755 --- a/scripts/run-integration-tests.sh +++ b/scripts/run-integration-tests.sh @@ -2,7 +2,7 @@ set -eEuo pipefail -POCKET_IC_SERVER_VERSION="9.0.3" +POCKET_IC_SERVER_VERSION="10.0.0" SCRIPT=$(readlink -f "$0") SCRIPT_DIR=$(dirname "$SCRIPT") From 1c84a77a21eba8bc0022a817b528858dfccd594e Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Fri, 12 Sep 2025 15:56:50 +0200 Subject: [PATCH 2/8] use IcpFeatures of PocketIC --- scripts/run-integration-tests.sh | 3 - tests/integration/src/interfaces.rs | 23 +--- tests/integration/src/lib.rs | 3 - tests/integration/src/setup.rs | 178 +++++----------------------- 4 files changed, 28 insertions(+), 179 deletions(-) diff --git a/scripts/run-integration-tests.sh b/scripts/run-integration-tests.sh index f46e72e3a..cdb00a8e8 100755 --- a/scripts/run-integration-tests.sh +++ b/scripts/run-integration-tests.sh @@ -41,9 +41,6 @@ echo "PocketIC download completed" cd ../.. if [ $DOWNLOAD_NNS_CANISTERS == "true" ]; then - ./scripts/download-nns-canister-wasm.sh icp_ledger ledger-canister - ./scripts/download-nns-canister-wasm.sh icp_index ic-icp-index-canister - ./scripts/download-nns-canister-wasm.sh cmc cycles-minting-canister ./scripts/download-nns-canister-wasm.sh icrc1_ledger ic-icrc1-ledger fi diff --git a/tests/integration/src/interfaces.rs b/tests/integration/src/interfaces.rs index a2b5bd2e2..9f6532ff4 100644 --- a/tests/integration/src/interfaces.rs +++ b/tests/integration/src/interfaces.rs @@ -4,30 +4,9 @@ use ic_ledger_types::{ DEFAULT_SUBACCOUNT, }; use pocket_ic::{query_candid_as, update_candid_as, PocketIc}; -use std::collections::{HashMap, HashSet}; use crate::setup::{create_canister_with_cycles, get_canister_wasm}; -#[derive(CandidType)] -pub enum NnsLedgerCanisterPayload { - Init(NnsLedgerCanisterInitPayload), -} - -#[derive(CandidType)] -pub struct NnsLedgerCanisterInitPayload { - pub minting_account: String, - pub initial_values: HashMap, - pub send_whitelist: HashSet, - pub transfer_fee: Option, - pub token_symbol: Option, - pub token_name: Option, -} - -#[derive(CandidType)] -pub struct NnsIndexCanisterInitPayload { - pub ledger_id: Principal, -} - pub fn get_icp_balance(env: &PocketIc, user_id: Principal) -> u64 { let ledger_canister_id = Principal::from_text("ryjl3-tyaaa-aaaaa-aaaba-cai").unwrap(); let account = AccountIdentifier::new(&user_id, &DEFAULT_SUBACCOUNT); @@ -112,7 +91,7 @@ pub fn mint_icp( to: &AccountIdentifier, e8s: u64, ) -> Result { - send_icp_to_account(env, minter_id, *to, e8s, 0, None, Some(0)) + send_icp_to_account(env, minter_id, *to, e8s, 0, None, None) } #[derive(CandidType)] diff --git a/tests/integration/src/lib.rs b/tests/integration/src/lib.rs index aaabf3783..0f2f32113 100644 --- a/tests/integration/src/lib.rs +++ b/tests/integration/src/lib.rs @@ -38,9 +38,6 @@ pub struct TestEnv { #[derive(Clone, Copy, Debug)] pub struct CanisterIds { - pub icp_ledger: Principal, - pub icp_index: Principal, - pub cycles_minting_canister: Principal, pub control_panel: Principal, pub station: Principal, } diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index cafb21bb9..640b3fc45 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -1,20 +1,17 @@ -use crate::interfaces::{ - NnsIndexCanisterInitPayload, NnsLedgerCanisterInitPayload, NnsLedgerCanisterPayload, -}; +use crate::interfaces::send_icp_to_account; use crate::utils::{ await_station_healthy, controller_test_id, minter_test_id, set_controllers, upload_canister_modules, NNS_ROOT_CANISTER_ID, }; use crate::{CanisterIds, TestEnv}; -use candid::{CandidType, Encode, Principal}; -use ic_ledger_types::{AccountIdentifier, Tokens, DEFAULT_SUBACCOUNT}; -use pocket_ic::{update_candid_as, PocketIc, PocketIcBuilder, PocketIcState}; -use serde::Serialize; +use candid::{Encode, Principal}; +use ic_ledger_types::{AccountIdentifier, DEFAULT_SUBACCOUNT}; +use pocket_ic::common::rest::{IcpFeatures, IcpFeaturesConfig}; +use pocket_ic::{PocketIc, PocketIcBuilder, PocketIcState}; use station_api::{ InitUserInput, SystemInit as SystemInitArg, SystemInstall as SystemInstallArg, UserIdentityInput, }; -use std::collections::{HashMap, HashSet}; use std::env; use std::fs::File; use std::io::Read; @@ -25,45 +22,7 @@ use std::time::{Duration, SystemTime}; pub static WALLET_ADMIN_USER: Principal = Principal::from_slice(&[1; 29]); pub static CANISTER_INITIAL_CYCLES: u128 = 100_000_000_000_000; -#[derive(CandidType, Serialize)] -pub struct SetAuthorizedSubnetworkListArgs { - pub who: Option, - pub subnets: Vec, -} - -#[derive(CandidType, Serialize)] -enum UpdateSubnetTypeArgs { - Add(String), - //Remove(String), -} - -#[derive(CandidType, Serialize)] -struct SubnetListWithType { - pub subnets: Vec, - pub subnet_type: String, -} - -#[derive(CandidType, Serialize)] -enum ChangeSubnetTypeAssignmentArgs { - Add(SubnetListWithType), - //Remove(SubnetListWithType), -} - -#[derive(Serialize, CandidType, Clone, Debug, PartialEq, Eq)] -pub enum ExchangeRateCanister { - /// Enables the exchange rate canister with the given canister ID. - Set(Principal), -} - -#[derive(Serialize, CandidType, Clone, Debug, PartialEq, Eq)] -pub struct CyclesCanisterInitPayload { - pub ledger_canister_id: Option, - pub governance_canister_id: Option, - pub minting_account_id: Option, - pub exchange_rate_canister: Option, - pub cycles_ledger_canister_id: Option, - pub last_purged_notification: Option, -} +const ICP_E8S: u64 = 100_000_000; #[derive(Clone)] pub struct SetupConfig { @@ -148,11 +107,17 @@ pub fn setup_new_env_with_config(config: SetupConfig) -> TestEnv { if config.capture_state { builder = builder.with_state(PocketIcState::new()); } + let icp_features = IcpFeatures { + icp_token: Some(IcpFeaturesConfig::DefaultConfig), + cycles_minting: Some(IcpFeaturesConfig::DefaultConfig), + ..Default::default() + }; let mut env = builder .with_nns_subnet() .with_ii_subnet() .with_fiduciary_subnet() .with_application_subnet() + .with_icp_features(icp_features) .build(); // If we set the time to SystemTime::now, and then progress pocketIC a couple ticks @@ -196,25 +161,6 @@ fn install_canisters( controller: Principal, minter: Principal, ) -> CanisterIds { - let specified_nns_ledger_canister_id = - Principal::from_text("ryjl3-tyaaa-aaaaa-aaaba-cai").unwrap(); - let nns_ledger_canister_id = env - .create_canister_with_id(Some(controller), None, specified_nns_ledger_canister_id) - .unwrap(); - assert_eq!(nns_ledger_canister_id, specified_nns_ledger_canister_id); - let specified_nns_index_canister_id = - Principal::from_text("r7inp-6aaaa-aaaaa-aaabq-cai").unwrap(); - let nns_index_canister_id = env - .create_canister_with_id(Some(controller), None, specified_nns_index_canister_id) - .unwrap(); - assert_eq!(nns_index_canister_id, specified_nns_index_canister_id); - - let specified_cmc_canister_id = Principal::from_text("rkp4c-7iaaa-aaaaa-aaaca-cai").unwrap(); - let cmc_canister_id = env - .create_canister_with_id(Some(controller), None, specified_cmc_canister_id) - .unwrap(); - assert_eq!(cmc_canister_id, specified_cmc_canister_id); - let specified_nns_exchange_rate_canister_id = Principal::from_text("uf6dk-hyaaa-aaaaq-qaaaq-cai").unwrap(); let nns_exchange_rate_canister_id = env @@ -229,95 +175,28 @@ fn install_canisters( specified_nns_exchange_rate_canister_id ); - let nns_governance_canister_id = Principal::from_text("rrkah-fqaaa-aaaaa-aaaaq-cai").unwrap(); - let nns_cycles_ledger_canister_id = - Principal::from_text("um5iw-rqaaa-aaaaq-qaaba-cai").unwrap(); - let controller_account = AccountIdentifier::new(&controller, &DEFAULT_SUBACCOUNT); let minting_account = AccountIdentifier::new(&minter, &DEFAULT_SUBACCOUNT); - let icp_ledger_canister_wasm = get_canister_wasm("icp_ledger").to_vec(); - let icp_ledger_init_args = NnsLedgerCanisterPayload::Init(NnsLedgerCanisterInitPayload { - minting_account: minting_account.to_string(), - initial_values: HashMap::from([( - controller_account.to_string(), - Tokens::from_e8s(1_000_000_000_000), - )]), - send_whitelist: HashSet::new(), - transfer_fee: Some(Tokens::from_e8s(10_000)), - token_symbol: Some("ICP".to_string()), - token_name: Some("Internet Computer".to_string()), - }); - env.install_canister( - nns_ledger_canister_id, - icp_ledger_canister_wasm, - Encode!(&icp_ledger_init_args).unwrap(), - Some(controller), - ); - - let icp_index_canister_wasm = get_canister_wasm("icp_index").to_vec(); - let icp_index_init_args = NnsIndexCanisterInitPayload { - ledger_id: nns_ledger_canister_id, - }; - env.install_canister( - nns_index_canister_id, - icp_index_canister_wasm, - Encode!(&icp_index_init_args).unwrap(), - Some(controller), - ); - - let cmc_canister_wasm = get_canister_wasm("cmc").to_vec(); - let cmc_init_args: Option = Some(CyclesCanisterInitPayload { - ledger_canister_id: Some(nns_ledger_canister_id), - governance_canister_id: Some(nns_governance_canister_id), - minting_account_id: None, - exchange_rate_canister: Some(ExchangeRateCanister::Set(nns_exchange_rate_canister_id)), - cycles_ledger_canister_id: Some(nns_cycles_ledger_canister_id), - last_purged_notification: Some(0), - }); - env.install_canister( - cmc_canister_id, - cmc_canister_wasm, - Encode!(&cmc_init_args).unwrap(), - Some(controller), - ); - // set default (application) subnets on CMC - // by setting authorized subnets associated with no principal (CMC API) - let application_subnet_id = env.topology().get_app_subnets()[0]; - let set_authorized_subnetwork_list_args = SetAuthorizedSubnetworkListArgs { - who: None, - subnets: vec![application_subnet_id], - }; - update_candid_as::<_, ((),)>( - env, - cmc_canister_id, - nns_governance_canister_id, - "set_authorized_subnetwork_list", - (set_authorized_subnetwork_list_args,), - ) - .unwrap(); - // add fiduciary subnet to CMC - let update_subnet_type_args = UpdateSubnetTypeArgs::Add("fiduciary".to_string()); - update_candid_as::<_, ((),)>( + let many_e8s = 1_000_000 * ICP_E8S; + send_icp_to_account( env, - cmc_canister_id, - nns_governance_canister_id, - "update_subnet_type", - (update_subnet_type_args,), + Principal::anonymous(), + controller_account, + many_e8s, + 42, + None, + Some(10_000), ) .unwrap(); - let fiduciary_subnet_id = env.topology().get_fiduciary().unwrap(); - let change_subnet_type_assignment_args = - ChangeSubnetTypeAssignmentArgs::Add(SubnetListWithType { - subnets: vec![fiduciary_subnet_id], - subnet_type: "fiduciary".to_string(), - }); - update_candid_as::<_, ((),)>( + send_icp_to_account( env, - cmc_canister_id, - nns_governance_canister_id, - "change_subnet_type_assignment", - (change_subnet_type_assignment_args,), + Principal::anonymous(), + minting_account, + many_e8s, + 42, + None, + Some(10_000), ) .unwrap(); @@ -382,11 +261,8 @@ fn install_canisters( await_station_healthy(env, station, WALLET_ADMIN_USER); CanisterIds { - icp_ledger: nns_ledger_canister_id, - icp_index: cmc_canister_id, control_panel, station, - cycles_minting_canister: cmc_canister_id, } } From 86a051a3c6024fb86defedd3726efe0377f2a606 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Fri, 12 Sep 2025 16:30:05 +0200 Subject: [PATCH 3/8] fix test --- tests/integration/src/system_upgrade_tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/src/system_upgrade_tests.rs b/tests/integration/src/system_upgrade_tests.rs index b2ae3aeca..112ffd0de 100644 --- a/tests/integration/src/system_upgrade_tests.rs +++ b/tests/integration/src/system_upgrade_tests.rs @@ -511,7 +511,7 @@ fn failed_system_restore() { match status { RequestStatusDTO::Failed { reason } => { - assert!(reason.unwrap().contains("IC0408: Payload deserialization error: InvalidLength(\"Invalid snapshot ID length: provided 1, minumum length expected 37.\"")); + assert!(reason.unwrap().contains("Invalid length of SnapshotId: Invalid snapshot ID length: provided 1, minumum length expected 37.")); } _ => panic!("Unexpected request status: {:?}", status), }; From 361f1ca94a75705bc341c938e3085f1400ab1aa1 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Mon, 15 Sep 2025 08:29:45 +0200 Subject: [PATCH 4/8] fix test --- .../integration/assets/upgrader-memory-v1.bin | Bin 153740 -> 153744 bytes tests/integration/src/setup.rs | 26 +++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/integration/assets/upgrader-memory-v1.bin b/tests/integration/assets/upgrader-memory-v1.bin index a28512a4bab6bdd557f0983bfa442883cf92e676..fbbfe327458cdc4b44b317f9dbe7fc9952e6510d 100644 GIT binary patch literal 153744 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

iD|0iq1iLI1Tg#)&hyV{T4n@ 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 literal 153740 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 diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index 640b3fc45..b5a5405b6 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -17,7 +17,7 @@ use std::fs::File; use std::io::Read; use std::path::{Path, PathBuf}; use std::sync::OnceLock; -use std::time::{Duration, SystemTime}; +use std::time::{Duration, SystemTime, UNIX_EPOCH}; pub static WALLET_ADMIN_USER: Principal = Principal::from_slice(&[1; 29]); pub static CANISTER_INITIAL_CYCLES: u128 = 100_000_000_000_000; @@ -112,23 +112,29 @@ pub fn setup_new_env_with_config(config: SetupConfig) -> TestEnv { cycles_minting: Some(IcpFeaturesConfig::DefaultConfig), ..Default::default() }; + let initial_time = if config.set_time_to_now { + // If we set the time to SystemTime::now, and then progress pocketIC a couple ticks + // and then enter live mode, we would crash the deterministic state machine, as the + // live mode would set the time back to the current time. + // Therefore, if we want to use live mode, we need to start the tests with the time + // set to the past. + let system_time = SystemTime::now() - Duration::from_secs(24 * 60 * 60); + system_time.duration_since(UNIX_EPOCH).unwrap().as_nanos() as u64 + } else { + // The default initial timestamp which is larger than + // the minimum timestamp 10 May 2021 10:00:01 AM CEST for the Cycles Minting Canister. + // In particular, this (deterministic) timestamp was used to generate `upgrader-memory-v1.bin`. + 1620684000_000000000 + }; let mut env = builder .with_nns_subnet() .with_ii_subnet() .with_fiduciary_subnet() .with_application_subnet() .with_icp_features(icp_features) + .with_initial_timestamp(initial_time) .build(); - // If we set the time to SystemTime::now, and then progress pocketIC a couple ticks - // and then enter live mode, we would crash the deterministic state machine, as the - // live mode would set the time back to the current time. - // Therefore, if we want to use live mode, we need to start the tests with the time - // set to the past. - let system_time = SystemTime::now() - Duration::from_secs(24 * 60 * 60); - if config.set_time_to_now { - env.set_time(system_time.into()); - } let controller = controller_test_id(); let minter = minter_test_id(); let canister_ids = install_canisters(&mut env, config, controller, minter); From 0bb2cdb08551760a0a10d30227b4e2900a901f16 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Mon, 15 Sep 2025 08:38:21 +0200 Subject: [PATCH 5/8] simplify --- tests/integration/src/setup.rs | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index b5a5405b6..a3e2ea173 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -185,26 +185,18 @@ fn install_canisters( let minting_account = AccountIdentifier::new(&minter, &DEFAULT_SUBACCOUNT); let many_e8s = 1_000_000 * ICP_E8S; - send_icp_to_account( - env, - Principal::anonymous(), - controller_account, - many_e8s, - 42, - None, - Some(10_000), - ) - .unwrap(); - send_icp_to_account( - env, - Principal::anonymous(), - minting_account, - many_e8s, - 42, - None, - Some(10_000), - ) - .unwrap(); + for account in [controller_account, minting_account] { + send_icp_to_account( + env, + Principal::anonymous(), + account, + many_e8s, + 42, + None, + Some(10_000), + ) + .unwrap(); + } let control_panel = create_canister_with_cycles( env, From 33c56e83b0b971282ea29f477c40d1fb61b14118 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Mon, 15 Sep 2025 08:39:20 +0200 Subject: [PATCH 6/8] rename minting_account to rich_account --- tests/integration/src/interfaces.rs | 2 +- tests/integration/src/setup.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration/src/interfaces.rs b/tests/integration/src/interfaces.rs index 9f6532ff4..e692d3475 100644 --- a/tests/integration/src/interfaces.rs +++ b/tests/integration/src/interfaces.rs @@ -96,7 +96,7 @@ pub fn mint_icp( #[derive(CandidType)] pub struct Icrc1LedgerInitArgs { - pub minting_account: icrc_ledger_types::icrc1::account::Account, + pub rich_account: icrc_ledger_types::icrc1::account::Account, pub fee_collector_account: Option, pub initial_balances: Vec<(icrc_ledger_types::icrc1::account::Account, candid::Nat)>, pub transfer_fee: candid::Nat, diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index a3e2ea173..034a646cc 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -182,10 +182,10 @@ fn install_canisters( ); let controller_account = AccountIdentifier::new(&controller, &DEFAULT_SUBACCOUNT); - let minting_account = AccountIdentifier::new(&minter, &DEFAULT_SUBACCOUNT); + let rich_account = AccountIdentifier::new(&minter, &DEFAULT_SUBACCOUNT); let many_e8s = 1_000_000 * ICP_E8S; - for account in [controller_account, minting_account] { + for account in [controller_account, rich_account] { send_icp_to_account( env, Principal::anonymous(), From 21ce0a0392fe5eefda3313bf47361b5e00f77b20 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Mon, 15 Sep 2025 08:47:12 +0200 Subject: [PATCH 7/8] get rid of ICP minter in tests --- tests/integration/src/account_tests.rs | 9 +++-- tests/integration/src/cycles_monitor_tests.rs | 2 +- tests/integration/src/interfaces.rs | 8 ++--- tests/integration/src/lib.rs | 1 - tests/integration/src/setup.rs | 35 +++++++------------ tests/integration/src/transfer_tests.rs | 9 +++-- tests/integration/src/utils.rs | 7 ---- 7 files changed, 26 insertions(+), 45 deletions(-) diff --git a/tests/integration/src/account_tests.rs b/tests/integration/src/account_tests.rs index 53ef749d2..4b7f1990d 100644 --- a/tests/integration/src/account_tests.rs +++ b/tests/integration/src/account_tests.rs @@ -1,6 +1,6 @@ use std::time::Duration; -use crate::interfaces::mint_icp; +use crate::interfaces::get_icp; use crate::setup::{setup_new_env, WALLET_ADMIN_USER}; use crate::utils::{create_account, expect_await_call_result, get_icp_asset}; use crate::TestEnv; @@ -18,8 +18,7 @@ fn test_fetch_balances() { let TestEnv { env, canister_ids, - // controller, - minter, + controller, .. } = setup_new_env(); @@ -62,8 +61,8 @@ fn test_fetch_balances() { ) .expect("cannot parse ICP account identifier"); - mint_icp(&env, minter, &icp_account_identifier, 10 * 100_000_000) - .expect("failed to mint ICP to account"); + get_icp(&env, controller, &icp_account_identifier, 10 * 100_000_000) + .expect("failed to get ICP to account"); let messages_ids = [ env.submit_call( diff --git a/tests/integration/src/cycles_monitor_tests.rs b/tests/integration/src/cycles_monitor_tests.rs index 00f5a648e..d30fab359 100644 --- a/tests/integration/src/cycles_monitor_tests.rs +++ b/tests/integration/src/cycles_monitor_tests.rs @@ -179,7 +179,7 @@ fn successful_monitors_stations_and_tops_up() { } #[test] -fn can_mint_cycles_to_top_up_self() { +fn can_get_cycles_to_top_up_self() { let TestEnv { env, canister_ids, diff --git a/tests/integration/src/interfaces.rs b/tests/integration/src/interfaces.rs index e692d3475..f27e811ec 100644 --- a/tests/integration/src/interfaces.rs +++ b/tests/integration/src/interfaces.rs @@ -85,18 +85,18 @@ pub fn send_icp( send_icp_to_account(env, sender_id, to, e8s, memo, None, None) } -pub fn mint_icp( +pub fn get_icp( env: &PocketIc, - minter_id: Principal, + rich_id: Principal, to: &AccountIdentifier, e8s: u64, ) -> Result { - send_icp_to_account(env, minter_id, *to, e8s, 0, None, None) + send_icp_to_account(env, rich_id, *to, e8s, 0, None, None) } #[derive(CandidType)] pub struct Icrc1LedgerInitArgs { - pub rich_account: icrc_ledger_types::icrc1::account::Account, + pub minting_account: icrc_ledger_types::icrc1::account::Account, pub fee_collector_account: Option, pub initial_balances: Vec<(icrc_ledger_types::icrc1::account::Account, candid::Nat)>, pub transfer_fee: candid::Nat, diff --git a/tests/integration/src/lib.rs b/tests/integration/src/lib.rs index 0f2f32113..76a1933e9 100644 --- a/tests/integration/src/lib.rs +++ b/tests/integration/src/lib.rs @@ -33,7 +33,6 @@ pub struct TestEnv { pub env: PocketIc, pub canister_ids: CanisterIds, pub controller: Principal, - pub minter: Principal, } #[derive(Clone, Copy, Debug)] diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index 034a646cc..35b756b48 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -1,7 +1,7 @@ use crate::interfaces::send_icp_to_account; use crate::utils::{ - await_station_healthy, controller_test_id, minter_test_id, set_controllers, - upload_canister_modules, NNS_ROOT_CANISTER_ID, + await_station_healthy, controller_test_id, set_controllers, upload_canister_modules, + NNS_ROOT_CANISTER_ID, }; use crate::{CanisterIds, TestEnv}; use candid::{Encode, Principal}; @@ -49,7 +49,6 @@ struct CachedTestEnv { pub state: PocketIcState, pub canister_ids: CanisterIds, pub controller: Principal, - pub minter: Principal, } static CACHED_TEST_ENV: OnceLock = OnceLock::new(); @@ -70,7 +69,6 @@ pub fn setup_new_env() -> TestEnv { state, canister_ids: test_env.canister_ids, controller: test_env.controller, - minter: test_env.minter, } }); @@ -81,7 +79,6 @@ pub fn setup_new_env() -> TestEnv { env, canister_ids: cached_test_env.canister_ids, controller: cached_test_env.controller, - minter: cached_test_env.minter, } } @@ -136,14 +133,12 @@ pub fn setup_new_env_with_config(config: SetupConfig) -> TestEnv { .build(); let controller = controller_test_id(); - let minter = minter_test_id(); - let canister_ids = install_canisters(&mut env, config, controller, minter); + let canister_ids = install_canisters(&mut env, config, controller); TestEnv { env, canister_ids, controller, - minter, } } @@ -165,7 +160,6 @@ fn install_canisters( env: &mut PocketIc, config: SetupConfig, controller: Principal, - minter: Principal, ) -> CanisterIds { let specified_nns_exchange_rate_canister_id = Principal::from_text("uf6dk-hyaaa-aaaaq-qaaaq-cai").unwrap(); @@ -182,21 +176,18 @@ fn install_canisters( ); let controller_account = AccountIdentifier::new(&controller, &DEFAULT_SUBACCOUNT); - let rich_account = AccountIdentifier::new(&minter, &DEFAULT_SUBACCOUNT); let many_e8s = 1_000_000 * ICP_E8S; - for account in [controller_account, rich_account] { - send_icp_to_account( - env, - Principal::anonymous(), - account, - many_e8s, - 42, - None, - Some(10_000), - ) - .unwrap(); - } + send_icp_to_account( + env, + Principal::anonymous(), + controller_account, + many_e8s, + 42, + None, + Some(10_000), + ) + .unwrap(); let control_panel = create_canister_with_cycles( env, diff --git a/tests/integration/src/transfer_tests.rs b/tests/integration/src/transfer_tests.rs index dbc5ea71b..c66c88353 100644 --- a/tests/integration/src/transfer_tests.rs +++ b/tests/integration/src/transfer_tests.rs @@ -1,5 +1,5 @@ use crate::interfaces::{ - default_account, deploy_icrc1_token, get_icp_balance, get_icrc1_balance_of, mint_icp, + default_account, deploy_icrc1_token, get_icp, get_icp_balance, get_icrc1_balance_of, mint_icrc1_tokens, send_icp, send_icp_to_account, ArchiveOptions, Icrc1LedgerInitArgs, ICP, ICP_FEE, }; @@ -484,8 +484,7 @@ fn make_icrc1_icp_transfer() { let TestEnv { env, canister_ids, - // controller, - minter, + controller, .. } = setup_new_env(); @@ -540,13 +539,13 @@ fn make_icrc1_icp_transfer() { ) .expect("invalid account address"); - mint_icp(&env, minter, &icp_account_identifier, 10 * 100_000_000) + get_icp(&env, controller, &icp_account_identifier, 10 * 100_000_000) .expect("failed to mint ICP to account"); mint_icrc1_tokens( &env, Principal::from_text("ryjl3-tyaaa-aaaaa-aaaba-cai").unwrap(), - minter, + controller, icp_icrc1_account, 20 * 100_000_000, ) diff --git a/tests/integration/src/utils.rs b/tests/integration/src/utils.rs index 29aa64614..6c8aac071 100644 --- a/tests/integration/src/utils.rs +++ b/tests/integration/src/utils.rs @@ -116,13 +116,6 @@ pub fn controller_test_id() -> Principal { Principal::from_slice(&bytes) } -pub fn minter_test_id() -> Principal { - let mut bytes = 0_u64.to_le_bytes().to_vec(); - bytes.push(0xfc); // internal marker for minter test id - bytes.push(0x01); // marker for opaque ids - Principal::from_slice(&bytes) -} - pub fn user_test_id(n: u64) -> Principal { let mut bytes = n.to_le_bytes().to_vec(); bytes.push(0xfe); // internal marker for user test ids From e84a3e0de7cdd726b1c248e36d418e4bd7942d87 Mon Sep 17 00:00:00 2001 From: Martin Raszyk Date: Mon, 15 Sep 2025 08:50:09 +0200 Subject: [PATCH 8/8] code validation --- tests/integration/src/setup.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/src/setup.rs b/tests/integration/src/setup.rs index 35b756b48..9e2e42c06 100644 --- a/tests/integration/src/setup.rs +++ b/tests/integration/src/setup.rs @@ -121,7 +121,7 @@ pub fn setup_new_env_with_config(config: SetupConfig) -> TestEnv { // The default initial timestamp which is larger than // the minimum timestamp 10 May 2021 10:00:01 AM CEST for the Cycles Minting Canister. // In particular, this (deterministic) timestamp was used to generate `upgrader-memory-v1.bin`. - 1620684000_000000000 + 1_620_684_000_000_000_000 }; let mut env = builder .with_nns_subnet()