@@ -340,6 +340,26 @@ fn transfer_all_should_work() {
340
340
} ) ;
341
341
}
342
342
343
+ #[ test]
344
+ fn transfer_failed_when_allow_death_but_cannot_dec_provider ( ) {
345
+ ExtBuilder :: default ( )
346
+ . one_hundred_for_alice_n_bob ( )
347
+ . build ( )
348
+ . execute_with ( || {
349
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , true ) ;
350
+ assert_ok ! ( System :: inc_consumers( & ALICE ) ) ;
351
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , false ) ;
352
+ assert_noop ! (
353
+ Tokens :: transfer( Some ( ALICE ) . into( ) , BOB , DOT , 100 ) ,
354
+ Error :: <Runtime >:: KeepAlive
355
+ ) ;
356
+
357
+ assert_ok ! ( Tokens :: deposit( BTC , & ALICE , 100 ) ) ;
358
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , true ) ;
359
+ assert_ok ! ( Tokens :: transfer( Some ( ALICE ) . into( ) , BOB , DOT , 100 ) ) ;
360
+ } ) ;
361
+ }
362
+
343
363
#[ test]
344
364
fn deposit_should_work ( ) {
345
365
ExtBuilder :: default ( )
@@ -593,6 +613,34 @@ fn currency_adapter_ensure_currency_adapter_should_work() {
593
613
} ) ;
594
614
}
595
615
616
+ #[ test]
617
+ fn currency_adapter_withdraw_failed_when_allow_death_but_cannot_dec_provider ( ) {
618
+ ExtBuilder :: default ( )
619
+ . one_hundred_for_alice_n_bob ( )
620
+ . build ( )
621
+ . execute_with ( || {
622
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , true ) ;
623
+ assert_ok ! ( System :: inc_consumers( & ALICE ) ) ;
624
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , false ) ;
625
+ assert ! ( TreasuryCurrencyAdapter :: withdraw(
626
+ & ALICE ,
627
+ 100 ,
628
+ WithdrawReasons :: TRANSFER ,
629
+ ExistenceRequirement :: AllowDeath
630
+ )
631
+ . is_err( ) ) ;
632
+ assert_ok ! ( Tokens :: deposit( BTC , & ALICE , 100 ) ) ;
633
+ assert_eq ! ( System :: can_dec_provider( & ALICE ) , true ) ;
634
+ assert ! ( TreasuryCurrencyAdapter :: withdraw(
635
+ & ALICE ,
636
+ 100 ,
637
+ WithdrawReasons :: TRANSFER ,
638
+ ExistenceRequirement :: AllowDeath
639
+ )
640
+ . is_ok( ) ) ;
641
+ } ) ;
642
+ }
643
+
596
644
#[ test]
597
645
fn currency_adapter_burn_must_work ( ) {
598
646
ExtBuilder :: default ( )
0 commit comments