Skip to content

Commit 848f6ae

Browse files
committed
Test receive using wrong inbox item
1 parent 25285e8 commit 848f6ae

1 file changed

Lines changed: 52 additions & 2 deletions

File tree

  • solana/programs/example-native-token-transfers/tests

solana/programs/example-native-token-transfers/tests/receive.rs

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
use anchor_lang::prelude::*;
55
use anchor_spl::token::{Token, TokenAccount};
66
use common::{
7-
setup::{TestData, OTHER_CHAIN},
7+
setup::{TestData, ANOTHER_CHAIN, OTHER_CHAIN},
88
utils::make_transfer_message,
99
};
1010
use example_native_token_transfers::{
@@ -18,7 +18,9 @@ use sdk::{
1818
};
1919
use solana_program::instruction::InstructionError;
2020
use 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+
};
2224
use spl_associated_token_account::get_associated_token_address_with_program_id;
2325
use 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

Comments
 (0)