@@ -144,30 +144,37 @@ fn test_deactivate_delinquent() {
144144 let vote_address = Pubkey :: new_unique ( ) ;
145145 let stake_address = Pubkey :: new_unique ( ) ;
146146
147+ let rent_exempt_reserve = Rent :: default ( ) . minimum_balance ( StakeStateV2 :: size_of ( ) ) ;
148+ let stake_lamports = rent_exempt_reserve + 1 ;
149+
147150 let initial_stake_state = StakeStateV2 :: Stake (
148- Meta :: default ( ) ,
151+ Meta {
152+ rent_exempt_reserve,
153+ ..Meta :: default ( )
154+ } ,
149155 new_stake ( 1 , & vote_address, & VoteStateV4 :: default ( ) , 1 ) ,
150156 StakeFlags :: empty ( ) ,
151157 ) ;
152158
153159 let stake_account = AccountSharedData :: new_data_with_space (
154- 1 ,
160+ stake_lamports ,
155161 & initial_stake_state,
156162 StakeStateV2 :: size_of ( ) ,
157163 & id ( ) ,
158164 )
159165 . unwrap ( ) ;
160166
167+ let vote_rent_exempt = Rent :: default ( ) . minimum_balance ( VoteStateV4 :: size_of ( ) ) ;
161168 let mut vote_account = AccountSharedData :: new_data_with_space (
162- 1 ,
169+ vote_rent_exempt ,
163170 & VoteStateVersions :: new_v4 ( VoteStateV4 :: default ( ) ) ,
164171 VoteStateV4 :: size_of ( ) ,
165172 & solana_sdk_ids:: vote:: id ( ) ,
166173 )
167174 . unwrap ( ) ;
168175
169176 let mut reference_vote_account = AccountSharedData :: new_data_with_space (
170- 1 ,
177+ vote_rent_exempt ,
171178 & VoteStateVersions :: new_v4 ( VoteStateV4 :: default ( ) ) ,
172179 VoteStateV4 :: size_of ( ) ,
173180 & solana_sdk_ids:: vote:: id ( ) ,
@@ -246,7 +253,15 @@ fn test_deactivate_delinquent() {
246253 vote : ( & vote_address, & vote_account) ,
247254 reference_vote : ( & reference_vote_address, & reference_vote_account) ,
248255 } )
249- . checks ( & [ Check :: success ( ) ] )
256+ . checks ( & [
257+ Check :: success ( ) ,
258+ Check :: all_rent_exempt ( ) ,
259+ Check :: account ( & stake_address)
260+ . lamports ( stake_lamports)
261+ . owner ( & id ( ) )
262+ . space ( StakeStateV2 :: size_of ( ) )
263+ . build ( ) ,
264+ ] )
250265 . test_missing_signers ( true )
251266 . execute ( ) ;
252267
@@ -271,7 +286,15 @@ fn test_deactivate_delinquent() {
271286 vote : ( & vote_address, & vote_account) ,
272287 reference_vote : ( & reference_vote_address, & reference_vote_account) ,
273288 } )
274- . checks ( & [ Check :: success ( ) ] )
289+ . checks ( & [
290+ Check :: success ( ) ,
291+ Check :: all_rent_exempt ( ) ,
292+ Check :: account ( & stake_address)
293+ . lamports ( stake_lamports)
294+ . owner ( & id ( ) )
295+ . space ( StakeStateV2 :: size_of ( ) )
296+ . build ( ) ,
297+ ] )
275298 . test_missing_signers ( true )
276299 . execute ( ) ;
277300
@@ -317,7 +340,15 @@ fn test_deactivate_delinquent() {
317340 vote : ( & vote_address, & vote_account) ,
318341 reference_vote : ( & reference_vote_address, & reference_vote_account) ,
319342 } )
320- . checks ( & [ Check :: success ( ) ] )
343+ . checks ( & [
344+ Check :: success ( ) ,
345+ Check :: all_rent_exempt ( ) ,
346+ Check :: account ( & stake_address)
347+ . lamports ( stake_lamports)
348+ . owner ( & id ( ) )
349+ . space ( StakeStateV2 :: size_of ( ) )
350+ . build ( ) ,
351+ ] )
321352 . test_missing_signers ( true )
322353 . execute ( ) ;
323354
@@ -350,14 +381,20 @@ fn test_deactivate_delinquent_incorrect_vote_owner() {
350381 let vote_address = Pubkey :: new_unique ( ) ;
351382 let stake_address = Pubkey :: new_unique ( ) ;
352383
384+ let rent_exempt_reserve = Rent :: default ( ) . minimum_balance ( StakeStateV2 :: size_of ( ) ) ;
385+ let stake_lamports = rent_exempt_reserve + 1 ;
386+
353387 let initial_stake_state = StakeStateV2 :: Stake (
354- Meta :: default ( ) ,
388+ Meta {
389+ rent_exempt_reserve,
390+ ..Meta :: default ( )
391+ } ,
355392 new_stake ( 1 , & vote_address, & VoteStateV4 :: default ( ) , 1 ) ,
356393 StakeFlags :: empty ( ) ,
357394 ) ;
358395
359396 let stake_account = AccountSharedData :: new_data_with_space (
360- 1 ,
397+ stake_lamports ,
361398 & initial_stake_state,
362399 StakeStateV2 :: size_of ( ) ,
363400 & id ( ) ,
@@ -432,14 +469,20 @@ fn test_deactivate_delinquent_deserialize_vote_state(
432469 let vote_address = Pubkey :: new_unique ( ) ;
433470 let stake_address = Pubkey :: new_unique ( ) ;
434471
472+ let rent_exempt_reserve = Rent :: default ( ) . minimum_balance ( StakeStateV2 :: size_of ( ) ) ;
473+ let stake_lamports = rent_exempt_reserve + 1 ;
474+
435475 let initial_stake_state = StakeStateV2 :: Stake (
436- Meta :: default ( ) ,
476+ Meta {
477+ rent_exempt_reserve,
478+ ..Meta :: default ( )
479+ } ,
437480 new_stake ( 1 , & vote_address, & VoteStateV4 :: default ( ) , 1 ) ,
438481 StakeFlags :: empty ( ) ,
439482 ) ;
440483
441484 let stake_account = AccountSharedData :: new_data_with_space (
442- 1 ,
485+ stake_lamports ,
443486 & initial_stake_state,
444487 StakeStateV2 :: size_of ( ) ,
445488 & id ( ) ,
@@ -471,8 +514,20 @@ fn test_deactivate_delinquent_deserialize_vote_state(
471514 ctx. mollusk
472515 . warp_to_slot ( current_epoch * ctx. mollusk . sysvars . epoch_schedule . slots_per_epoch ) ;
473516
517+ let stake_program_id = id ( ) ;
474518 let ( checks, test_missing_signers) = match expected_result {
475- Ok ( ( ) ) => ( vec ! [ Check :: success( ) ] , true ) ,
519+ Ok ( ( ) ) => (
520+ vec ! [
521+ Check :: success( ) ,
522+ Check :: all_rent_exempt( ) ,
523+ Check :: account( & stake_address)
524+ . lamports( stake_lamports)
525+ . owner( & stake_program_id)
526+ . space( StakeStateV2 :: size_of( ) )
527+ . build( ) ,
528+ ] ,
529+ true ,
530+ ) ,
476531 Err ( e) => ( vec ! [ Check :: err( e) ] , false ) ,
477532 } ;
478533
0 commit comments