@@ -2,20 +2,18 @@ use assert_matches::assert_matches;
22use candid:: { Decode , Encode , Nat , Principal } ;
33use canister_test:: Canister ;
44use cycles_minting_canister:: {
5- AuthorizedSubnetsResponse , BAD_REQUEST_CYCLES_PENALTY , ChangeSubnetTypeAssignmentArgs ,
6- CreateCanister , CreateCanisterError , MEANINGFUL_MEMOS , MEMO_CREATE_CANISTER , MEMO_MINT_CYCLES ,
7- MEMO_TOP_UP_CANISTER , NotifyCreateCanister , NotifyError , NotifyErrorCode , NotifyMintCyclesArg ,
8- NotifyMintCyclesSuccess , NotifyTopUp , SubnetListWithType , SubnetTypesToSubnetsResponse ,
9- UpdateSubnetTypeArgs ,
5+ AuthorizedSubnetsResponse , BAD_REQUEST_CYCLES_PENALTY , CanisterSettingsArgs ,
6+ ChangeSubnetTypeAssignmentArgs , CreateCanister , CreateCanisterError , MEANINGFUL_MEMOS ,
7+ MEMO_CREATE_CANISTER , MEMO_MINT_CYCLES , MEMO_TOP_UP_CANISTER , NotifyCreateCanister ,
8+ NotifyError , NotifyErrorCode , NotifyMintCyclesArg , NotifyMintCyclesSuccess , NotifyTopUp ,
9+ SubnetListWithType , SubnetTypesToSubnetsResponse , UpdateSubnetTypeArgs ,
1010} ;
1111use dfn_candid:: candid_one;
1212use dfn_protobuf:: protobuf;
1313use ic_canister_client_sender:: Sender ;
1414use ic_ledger_core:: tokens:: CheckedSub ;
15- // TODO(NNS1-3249): remove temporary alias `Ic00CanisterSettingsArgs`.
1615use ic_management_canister_types_private:: {
17- CanisterIdRecord , CanisterInfoResponse , CanisterSettingsArgs as Ic00CanisterSettingsArgs ,
18- CanisterSettingsArgsBuilder , CanisterStatusResultV2 , EnvironmentVariable ,
16+ CanisterIdRecord , CanisterInfoResponse , CanisterStatusResultV2 , EnvironmentVariable ,
1917} ;
2018use ic_nervous_system_clients:: canister_status:: CanisterStatusResult ;
2119use ic_nervous_system_common:: { E8 , ONE_MONTH_SECONDS , ONE_TRILLION } ;
@@ -301,12 +299,11 @@ fn test_cmc_notify_create_with_settings() {
301299 //specify single controller
302300 let canister = notify_create_canister (
303301 & state_machine,
304- Some (
305- CanisterSettingsArgsBuilder :: new ( )
306- // TEST_USER1 creates the canister, so to check it didn't default to the caller we use TEST_USER2
307- . with_controllers ( vec ! [ * TEST_USER2_PRINCIPAL ] )
308- . build ( ) ,
309- ) ,
302+ Some ( CanisterSettingsArgs {
303+ // TEST_USER1 creates the canister, so to check it didn't default to the caller we use TEST_USER2
304+ controllers : Some ( vec ! [ TEST_USER2_PRINCIPAL . 0 ] ) ,
305+ ..Default :: default ( )
306+ } ) ,
310307 ) ;
311308 let status = canister_status ( & state_machine, * TEST_USER2_PRINCIPAL , canister) . unwrap ( ) ;
312309 assert_eq ! ( status. controllers( ) , vec![ * TEST_USER2_PRINCIPAL ] ) ;
@@ -324,11 +321,10 @@ fn test_cmc_notify_create_with_settings() {
324321 specified_controllers. sort ( ) ;
325322 let canister = notify_create_canister (
326323 & state_machine,
327- Some (
328- CanisterSettingsArgsBuilder :: new ( )
329- . with_controllers ( specified_controllers. clone ( ) )
330- . build ( ) ,
331- ) ,
324+ Some ( CanisterSettingsArgs {
325+ controllers : Some ( specified_controllers. iter ( ) . map ( |p| p. 0 ) . collect ( ) ) ,
326+ ..Default :: default ( )
327+ } ) ,
332328 ) ;
333329 let status = canister_status ( & state_machine, * TEST_USER1_PRINCIPAL , canister) . unwrap ( ) ;
334330 let mut canister_controllers = status. controllers ( ) ;
@@ -342,23 +338,21 @@ fn test_cmc_notify_create_with_settings() {
342338 //specify no controller
343339 let canister = notify_create_canister (
344340 & state_machine,
345- Some (
346- CanisterSettingsArgsBuilder :: new ( )
347- . with_controllers ( vec ! [ ] )
348- . build ( ) ,
349- ) ,
341+ Some ( CanisterSettingsArgs {
342+ controllers : Some ( vec ! [ ] ) ,
343+ ..Default :: default ( )
344+ } ) ,
350345 ) ;
351346 let info = canister_info ( & state_machine, universal_canister, canister) ;
352347 assert ! ( info. controllers( ) . is_empty( ) ) ;
353348
354349 //specify compute allocation
355350 let canister = notify_create_canister (
356351 & state_machine,
357- Some ( dbg ! (
358- CanisterSettingsArgsBuilder :: new( )
359- . with_compute_allocation( 7 )
360- . build( )
361- ) ) ,
352+ Some ( dbg ! ( CanisterSettingsArgs {
353+ compute_allocation: Some ( Nat :: from( 7u64 ) ) ,
354+ ..Default :: default ( )
355+ } ) ) ,
362356 ) ;
363357 let status = dbg ! ( canister_status( & state_machine, * TEST_USER1_PRINCIPAL , canister) . unwrap( ) ) ;
364358 assert_eq ! ( status. controllers( ) , vec![ * TEST_USER1_PRINCIPAL ] ) ;
@@ -370,11 +364,10 @@ fn test_cmc_notify_create_with_settings() {
370364 //specify freezing threshold
371365 let canister = notify_create_canister (
372366 & state_machine,
373- Some (
374- CanisterSettingsArgsBuilder :: new ( )
375- . with_freezing_threshold ( 7 )
376- . build ( ) ,
377- ) ,
367+ Some ( CanisterSettingsArgs {
368+ freezing_threshold : Some ( Nat :: from ( 7u64 ) ) ,
369+ ..Default :: default ( )
370+ } ) ,
378371 ) ;
379372 let status = canister_status ( & state_machine, * TEST_USER1_PRINCIPAL , canister) . unwrap ( ) ;
380373 assert_eq ! ( status. controllers( ) , vec![ * TEST_USER1_PRINCIPAL ] ) ;
@@ -386,11 +379,10 @@ fn test_cmc_notify_create_with_settings() {
386379 //specify memory allocation
387380 let canister = notify_create_canister (
388381 & state_machine,
389- Some (
390- CanisterSettingsArgsBuilder :: new ( )
391- . with_memory_allocation ( 7 )
392- . build ( ) ,
393- ) ,
382+ Some ( CanisterSettingsArgs {
383+ memory_allocation : Some ( Nat :: from ( 7u64 ) ) ,
384+ ..Default :: default ( )
385+ } ) ,
394386 ) ;
395387 let status = canister_status ( & state_machine, * TEST_USER1_PRINCIPAL , canister) . unwrap ( ) ;
396388 assert_eq ! ( status. controllers( ) , vec![ * TEST_USER1_PRINCIPAL ] ) ;
@@ -406,11 +398,18 @@ fn test_cmc_notify_create_with_settings() {
406398 } ] ;
407399 let canister = notify_create_canister (
408400 & state_machine,
409- Some (
410- CanisterSettingsArgsBuilder :: new ( )
411- . with_environment_variables ( env_vars. clone ( ) )
412- . build ( ) ,
413- ) ,
401+ Some ( CanisterSettingsArgs {
402+ environment_variables : Some (
403+ env_vars
404+ . iter ( )
405+ . map ( |e| ic_management_canister_types:: EnvironmentVariable {
406+ name : e. name . clone ( ) ,
407+ value : e. value . clone ( ) ,
408+ } )
409+ . collect ( ) ,
410+ ) ,
411+ ..Default :: default ( )
412+ } ) ,
414413 ) ;
415414 let status = canister_status ( & state_machine, * TEST_USER1_PRINCIPAL , canister) . unwrap ( ) ;
416415 assert_eq ! ( status. controllers( ) , vec![ * TEST_USER1_PRINCIPAL ] ) ;
@@ -559,11 +558,10 @@ fn test_cmc_cycles_create_with_settings() {
559558 let canister = cmc_create_canister_with_cycles (
560559 & state_machine,
561560 universal_canister,
562- Some (
563- CanisterSettingsArgsBuilder :: new ( )
564- . with_controllers ( vec ! [ * TEST_USER1_PRINCIPAL ] )
565- . build ( ) ,
566- ) ,
561+ Some ( CanisterSettingsArgs {
562+ controllers : Some ( vec ! [ TEST_USER1_PRINCIPAL . 0 ] ) ,
563+ ..Default :: default ( )
564+ } ) ,
567565 None ,
568566 10_000_000_000_000 ,
569567 )
@@ -585,11 +583,10 @@ fn test_cmc_cycles_create_with_settings() {
585583 let canister = cmc_create_canister_with_cycles (
586584 & state_machine,
587585 universal_canister,
588- Some (
589- CanisterSettingsArgsBuilder :: new ( )
590- . with_controllers ( specified_controllers. clone ( ) )
591- . build ( ) ,
592- ) ,
586+ Some ( CanisterSettingsArgs {
587+ controllers : Some ( specified_controllers. iter ( ) . map ( |p| p. 0 ) . collect ( ) ) ,
588+ ..Default :: default ( )
589+ } ) ,
593590 None ,
594591 10_000_000_000_000 ,
595592 )
@@ -607,11 +604,10 @@ fn test_cmc_cycles_create_with_settings() {
607604 let canister = cmc_create_canister_with_cycles (
608605 & state_machine,
609606 universal_canister,
610- Some (
611- CanisterSettingsArgsBuilder :: new ( )
612- . with_controllers ( vec ! [ ] )
613- . build ( ) ,
614- ) ,
607+ Some ( CanisterSettingsArgs {
608+ controllers : Some ( vec ! [ ] ) ,
609+ ..Default :: default ( )
610+ } ) ,
615611 None ,
616612 10_000_000_000_000 ,
617613 )
@@ -623,12 +619,11 @@ fn test_cmc_cycles_create_with_settings() {
623619 let canister = cmc_create_canister_with_cycles (
624620 & state_machine,
625621 universal_canister,
626- Some (
627- CanisterSettingsArgsBuilder :: new ( )
628- . with_controllers ( vec ! [ * TEST_USER1_PRINCIPAL ] )
629- . with_compute_allocation ( 7 )
630- . build ( ) ,
631- ) ,
622+ Some ( CanisterSettingsArgs {
623+ controllers : Some ( vec ! [ TEST_USER1_PRINCIPAL . 0 ] ) ,
624+ compute_allocation : Some ( Nat :: from ( 7u64 ) ) ,
625+ ..Default :: default ( )
626+ } ) ,
632627 None ,
633628 10_000_000_000_000 ,
634629 )
@@ -644,12 +639,11 @@ fn test_cmc_cycles_create_with_settings() {
644639 let canister = cmc_create_canister_with_cycles (
645640 & state_machine,
646641 universal_canister,
647- Some (
648- CanisterSettingsArgsBuilder :: new ( )
649- . with_controllers ( vec ! [ * TEST_USER1_PRINCIPAL ] )
650- . with_freezing_threshold ( 7 )
651- . build ( ) ,
652- ) ,
642+ Some ( CanisterSettingsArgs {
643+ controllers : Some ( vec ! [ TEST_USER1_PRINCIPAL . 0 ] ) ,
644+ freezing_threshold : Some ( Nat :: from ( 7u64 ) ) ,
645+ ..Default :: default ( )
646+ } ) ,
653647 None ,
654648 10_000_000_000_000 ,
655649 )
@@ -665,12 +659,11 @@ fn test_cmc_cycles_create_with_settings() {
665659 let canister = cmc_create_canister_with_cycles (
666660 & state_machine,
667661 universal_canister,
668- Some (
669- CanisterSettingsArgsBuilder :: new ( )
670- . with_controllers ( vec ! [ * TEST_USER1_PRINCIPAL ] )
671- . with_memory_allocation ( 7 )
672- . build ( ) ,
673- ) ,
662+ Some ( CanisterSettingsArgs {
663+ controllers : Some ( vec ! [ TEST_USER1_PRINCIPAL . 0 ] ) ,
664+ memory_allocation : Some ( Nat :: from ( 7u64 ) ) ,
665+ ..Default :: default ( )
666+ } ) ,
674667 None ,
675668 10_000_000_000_000 ,
676669 )
@@ -690,12 +683,19 @@ fn test_cmc_cycles_create_with_settings() {
690683 let canister = cmc_create_canister_with_cycles (
691684 & state_machine,
692685 universal_canister,
693- Some (
694- CanisterSettingsArgsBuilder :: new ( )
695- . with_controllers ( vec ! [ * TEST_USER1_PRINCIPAL ] )
696- . with_environment_variables ( env_vars. clone ( ) )
697- . build ( ) ,
698- ) ,
686+ Some ( CanisterSettingsArgs {
687+ controllers : Some ( vec ! [ TEST_USER1_PRINCIPAL . 0 ] ) ,
688+ environment_variables : Some (
689+ env_vars
690+ . iter ( )
691+ . map ( |e| ic_management_canister_types:: EnvironmentVariable {
692+ name : e. name . clone ( ) ,
693+ value : e. value . clone ( ) ,
694+ } )
695+ . collect ( ) ,
696+ ) ,
697+ ..Default :: default ( )
698+ } ) ,
699699 None ,
700700 10_000_000_000_000 ,
701701 )
@@ -1007,7 +1007,7 @@ fn send_transfer(env: &StateMachine, arg: &TransferArgs) -> Result<BlockIndex, T
10071007/// subaccount of the CMC, which then tries to create a canister with the provided settings.
10081008fn notify_create_canister (
10091009 state_machine : & StateMachine ,
1010- settings : Option < Ic00CanisterSettingsArgs > ,
1010+ settings : Option < CanisterSettingsArgs > ,
10111011) -> CanisterId {
10121012 let transfer_args = TransferArgs {
10131013 memo : MEMO_CREATE_CANISTER ,
@@ -1110,7 +1110,7 @@ fn cycles_ledger_balance_of(state_machine: &StateMachine, account: Account) -> u
11101110fn cmc_create_canister_with_cycles (
11111111 state_machine : & StateMachine ,
11121112 universal_canister : CanisterId ,
1113- settings : Option < Ic00CanisterSettingsArgs > ,
1113+ settings : Option < CanisterSettingsArgs > ,
11141114 subnet_type : Option < String > ,
11151115 cycles : u128 ,
11161116) -> Result < CanisterId , CreateCanisterError > {
0 commit comments