Skip to content

Commit 8a3ec3f

Browse files
committed
Add invalid transceiver and reenable transceiver test case
1 parent 2b77dd3 commit 8a3ec3f

File tree

1 file changed

+50
-3
lines changed
  • solana/programs/example-native-token-transfers/tests

1 file changed

+50
-3
lines changed

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

+50-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#![cfg(feature = "test-sbf")]
22
#![feature(type_changing_struct_update)]
33

4-
use example_native_token_transfers::{config::Config, error::NTTError};
4+
use anchor_lang::{prelude::Pubkey, system_program::System, Id};
5+
use example_native_token_transfers::{
6+
config::Config, error::NTTError, registered_transceiver::RegisteredTransceiver,
7+
};
58
use ntt_messages::mode::Mode;
69
use solana_program_test::*;
710
use solana_sdk::{instruction::InstructionError, signer::Signer, transaction::TransactionError};
@@ -30,6 +33,47 @@ async fn assert_threshold(
3033
assert_eq!(config_account.threshold, expected_threshold);
3134
}
3235

36+
async fn assert_transceiver_id(
37+
ctx: &mut ProgramTestContext,
38+
test_data: &TestData,
39+
transceiver: &Pubkey,
40+
expected_id: u8,
41+
) {
42+
let registered_transceiver_account: RegisteredTransceiver = ctx
43+
.get_account_data_anchor(test_data.ntt.registered_transceiver(transceiver))
44+
.await;
45+
assert_eq!(
46+
registered_transceiver_account.transceiver_address,
47+
*transceiver
48+
);
49+
assert_eq!(registered_transceiver_account.id, expected_id);
50+
}
51+
52+
#[tokio::test]
53+
async fn test_invalid_transceiver() {
54+
let (mut ctx, test_data) = setup(Mode::Locking).await;
55+
56+
// try registering system program
57+
let err = register_transceiver(
58+
&test_data.ntt,
59+
RegisterTransceiver {
60+
payer: ctx.payer.pubkey(),
61+
owner: test_data.program_owner.pubkey(),
62+
transceiver: System::id(),
63+
},
64+
)
65+
.submit_with_signers(&[&test_data.program_owner], &mut ctx)
66+
.await
67+
.unwrap_err();
68+
assert_eq!(
69+
err.unwrap(),
70+
TransactionError::InstructionError(
71+
0,
72+
InstructionError::Custom(NTTError::InvalidTransceiverProgram.into())
73+
)
74+
);
75+
}
76+
3377
#[tokio::test]
3478
async fn test_reregister_all_transceivers() {
3579
let (mut ctx, test_data) = setup(Mode::Locking).await;
@@ -43,7 +87,7 @@ async fn test_reregister_all_transceivers() {
4387
let num_dummy_transceivers: u8 = dummy_transceivers.len().try_into().unwrap();
4488

4589
// register dummy transceivers
46-
for transceiver in &dummy_transceivers {
90+
for (idx, transceiver) in dummy_transceivers.iter().enumerate() {
4791
register_transceiver(
4892
&test_data.ntt,
4993
RegisterTransceiver {
@@ -55,6 +99,7 @@ async fn test_reregister_all_transceivers() {
5599
.submit_with_signers(&[&test_data.program_owner], &mut ctx)
56100
.await
57101
.unwrap();
102+
assert_transceiver_id(&mut ctx, &test_data, transceiver, idx as u8 + 1).await;
58103
}
59104

60105
// set threshold = 1 (for baked-in transceiver) + num_dummy_transceivers
@@ -98,7 +143,7 @@ async fn test_reregister_all_transceivers() {
98143
assert_threshold(&mut ctx, &test_data, 1).await;
99144

100145
// reregister dummy transceiver
101-
for transceiver in &dummy_transceivers {
146+
for (idx, transceiver) in dummy_transceivers.iter().enumerate() {
102147
register_transceiver(
103148
&test_data.ntt,
104149
RegisterTransceiver {
@@ -110,6 +155,7 @@ async fn test_reregister_all_transceivers() {
110155
.submit_with_signers(&[&test_data.program_owner], &mut ctx)
111156
.await
112157
.unwrap();
158+
assert_transceiver_id(&mut ctx, &test_data, transceiver, idx as u8 + 1).await;
113159
assert_threshold(&mut ctx, &test_data, 1).await;
114160
}
115161

@@ -125,6 +171,7 @@ async fn test_reregister_all_transceivers() {
125171
.submit_with_signers(&[&test_data.program_owner], &mut ctx)
126172
.await
127173
.unwrap();
174+
assert_transceiver_id(&mut ctx, &test_data, &example_native_token_transfers::ID, 0).await;
128175
assert_threshold(&mut ctx, &test_data, 1).await;
129176
}
130177

0 commit comments

Comments
 (0)