44use anchor_lang:: prelude:: * ;
55use anchor_spl:: token:: { Token , TokenAccount } ;
66use common:: {
7- setup:: { TestData , OTHER_CHAIN } ,
7+ setup:: { TestData , ANOTHER_CHAIN , OTHER_CHAIN } ,
88 utils:: make_transfer_message,
99} ;
1010use example_native_token_transfers:: {
@@ -18,7 +18,9 @@ use sdk::{
1818} ;
1919use solana_program:: instruction:: InstructionError ;
2020use solana_program_test:: * ;
21- use solana_sdk:: { signature:: Keypair , signer:: Signer , transaction:: TransactionError } ;
21+ use solana_sdk:: {
22+ pubkey:: Pubkey , signature:: Keypair , signer:: Signer , transaction:: TransactionError ,
23+ } ;
2224use spl_associated_token_account:: get_associated_token_address_with_program_id;
2325use wormhole_sdk:: Address ;
2426
@@ -234,6 +236,7 @@ async fn test_double_receive() {
234236
235237 assert_eq ! (
236238 err. unwrap( ) ,
239+ // AccountAlreadyInUse
237240 TransactionError :: InstructionError ( 0 , InstructionError :: Custom ( 0 ) )
238241 ) ;
239242}
@@ -368,3 +371,50 @@ async fn test_wrong_manager_peer() {
368371 )
369372 ) ;
370373}
374+
375+ #[ tokio:: test]
376+ async fn test_wrong_inbox_item ( ) {
377+ let recipient = Keypair :: new ( ) ;
378+ let ( mut ctx, test_data) = setup ( Mode :: Locking ) . await ;
379+
380+ let msg = make_transfer_message ( & good_ntt, [ 0u8 ; 32 ] , 1000 , & recipient. pubkey ( ) ) ;
381+
382+ let vaa0 = post_vaa_helper (
383+ & good_ntt,
384+ OTHER_CHAIN . into ( ) ,
385+ Address ( OTHER_TRANSCEIVER ) ,
386+ msg. clone ( ) ,
387+ & mut ctx,
388+ )
389+ . await ;
390+
391+ receive_message (
392+ & good_ntt,
393+ init_receive_message_accs ( & mut ctx, vaa0, OTHER_CHAIN , [ 0u8 ; 32 ] ) ,
394+ )
395+ . submit ( & mut ctx)
396+ . await
397+ . unwrap ( ) ;
398+
399+ // use 'ANOTHER_CHAIN' inbox item account here
400+ let mut redeem_accs = init_redeem_accs (
401+ & mut ctx,
402+ & test_data,
403+ OTHER_CHAIN ,
404+ msg. ntt_manager_payload . clone ( ) ,
405+ ) ;
406+ redeem_accs. inbox_item = good_ntt. inbox_item ( ANOTHER_CHAIN , msg. ntt_manager_payload . clone ( ) ) ;
407+
408+ let err = redeem ( & good_ntt, redeem_accs, RedeemArgs { } )
409+ . submit ( & mut ctx)
410+ . await
411+ . unwrap_err ( ) ;
412+
413+ assert_eq ! (
414+ err. unwrap( ) ,
415+ TransactionError :: InstructionError (
416+ 0 ,
417+ InstructionError :: Custom ( ErrorCode :: ConstraintSeeds . into( ) )
418+ )
419+ ) ;
420+ }
0 commit comments