Skip to content

Commit 059020f

Browse files
committed
solana: restructure test sdk to allow negative testing account derivations
1 parent f94fb1b commit 059020f

File tree

10 files changed

+260
-233
lines changed

10 files changed

+260
-233
lines changed

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use wormhole_anchor_sdk::wormhole::PostedVaa;
1313

1414
use crate::common::query::GetAccountDataAnchor;
1515
use crate::common::setup::{setup, OTHER_TRANSCEIVER};
16+
use crate::sdk::accounts::{good_ntt, NTTAccounts};
1617
use crate::sdk::transceivers::wormhole::instructions::broadcast_id::{broadcast_id, BroadcastId};
1718
use crate::{
1819
common::submit::Submittable,
@@ -24,12 +25,12 @@ pub mod sdk;
2425

2526
#[tokio::test]
2627
async fn test_broadcast_peer() {
27-
let (mut ctx, test_data) = setup(Mode::Locking).await;
28+
let (mut ctx, _test_data) = setup(Mode::Locking).await;
2829

2930
let wh_message = Keypair::new();
3031

3132
broadcast_peer(
32-
&test_data.ntt,
33+
&good_ntt,
3334
BroadcastPeer {
3435
payer: ctx.payer.pubkey(),
3536
wormhole_message: wh_message.pubkey(),
@@ -60,7 +61,7 @@ async fn test_broadcast_id() {
6061
let wh_message = Keypair::new();
6162

6263
broadcast_id(
63-
&test_data.ntt,
64+
&good_ntt,
6465
BroadcastId {
6566
payer: ctx.payer.pubkey(),
6667
wormhole_message: wh_message.pubkey(),
@@ -78,7 +79,7 @@ async fn test_broadcast_id() {
7879
assert_eq!(
7980
*msg.data(),
8081
WormholeTransceiverInfo {
81-
manager_address: test_data.ntt.program.to_bytes(),
82+
manager_address: good_ntt.program().to_bytes(),
8283
manager_mode: Mode::Locking,
8384
token_address: test_data.mint.to_bytes(),
8485
token_decimals: 9,

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

+38-48
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ use ntt_messages::{
1313
transceiver::TransceiverMessage, transceivers::wormhole::WormholeTransceiver,
1414
trimmed_amount::TrimmedAmount,
1515
};
16-
use sdk::transceivers::wormhole::instructions::receive_message::ReceiveMessage;
16+
use sdk::{
17+
accounts::{good_ntt, NTTAccounts},
18+
transceivers::wormhole::instructions::receive_message::ReceiveMessage,
19+
};
1720
use solana_program::instruction::InstructionError;
1821
use solana_program_test::*;
1922
use solana_sdk::{signature::Keypair, signer::Signer, transaction::TransactionError};
@@ -47,7 +50,7 @@ fn init_transfer_accs_args(
4750
) -> (Transfer, TransferArgs) {
4851
let accs = Transfer {
4952
payer: ctx.payer.pubkey(),
50-
peer: test_data.ntt.peer(OTHER_CHAIN),
53+
peer: good_ntt.peer(OTHER_CHAIN),
5154
mint: test_data.mint,
5255
from: test_data.user_token_account,
5356
from_authority: test_data.user.pubkey(),
@@ -72,27 +75,24 @@ fn init_redeem_accs(
7275
) -> Redeem {
7376
Redeem {
7477
payer: ctx.payer.pubkey(),
75-
peer: test_data.ntt.peer(chain_id),
76-
transceiver: test_data.ntt.program,
77-
transceiver_message: test_data
78-
.ntt
79-
.transceiver_message(chain_id, ntt_manager_message.id),
80-
inbox_item: test_data.ntt.inbox_item(chain_id, ntt_manager_message),
81-
inbox_rate_limit: test_data.ntt.inbox_rate_limit(chain_id),
78+
peer: good_ntt.peer(chain_id),
79+
transceiver: good_ntt.program(),
80+
transceiver_message: good_ntt.transceiver_message(chain_id, ntt_manager_message.id),
81+
inbox_item: good_ntt.inbox_item(chain_id, ntt_manager_message),
82+
inbox_rate_limit: good_ntt.inbox_rate_limit(chain_id),
8283
mint: test_data.mint,
8384
}
8485
}
8586

8687
fn init_receive_message_accs(
8788
ctx: &mut ProgramTestContext,
88-
test_data: &TestData,
8989
vaa: Pubkey,
9090
chain_id: u16,
9191
id: [u8; 32],
9292
) -> ReceiveMessage {
9393
ReceiveMessage {
9494
payer: ctx.payer.pubkey(),
95-
peer: test_data.ntt.transceiver_peer(chain_id),
95+
peer: good_ntt.transceiver_peer(chain_id),
9696
vaa,
9797
chain_id,
9898
id,
@@ -101,7 +101,6 @@ fn init_receive_message_accs(
101101

102102
async fn post_transfer_vaa(
103103
ctx: &mut ProgramTestContext,
104-
test_data: &TestData,
105104
id: [u8; 32],
106105
amount: u64,
107106
// TODO: this is used for a negative testing of the recipient ntt_manager
@@ -129,7 +128,7 @@ async fn post_transfer_vaa(
129128
OTHER_MANAGER,
130129
recipient_ntt_manager
131130
.map(|k| k.to_bytes())
132-
.unwrap_or_else(|| test_data.ntt.program.to_bytes()),
131+
.unwrap_or_else(|| good_ntt.program().to_bytes()),
133132
ntt_manager_message.clone(),
134133
vec![],
135134
);
@@ -147,24 +146,24 @@ async fn post_transfer_vaa(
147146
payload: transceiver_message,
148147
};
149148

150-
let posted_vaa = post_vaa(&test_data.ntt.wormhole, ctx, vaa).await;
149+
let posted_vaa = post_vaa(&good_ntt.wormhole(), ctx, vaa).await;
151150

152151
(posted_vaa, ntt_manager_message)
153152
}
154153

155-
async fn outbound_capacity(ctx: &mut ProgramTestContext, test_data: &TestData) -> u64 {
154+
async fn outbound_capacity(ctx: &mut ProgramTestContext) -> u64 {
156155
let clock: Clock = ctx.banks_client.get_sysvar().await.unwrap();
157156
let rate_limit: OutboxRateLimit = ctx
158-
.get_account_data_anchor(test_data.ntt.outbox_rate_limit())
157+
.get_account_data_anchor(good_ntt.outbox_rate_limit())
159158
.await;
160159

161160
rate_limit.rate_limit.capacity_at(clock.unix_timestamp)
162161
}
163162

164-
async fn inbound_capacity(ctx: &mut ProgramTestContext, test_data: &TestData) -> u64 {
163+
async fn inbound_capacity(ctx: &mut ProgramTestContext) -> u64 {
165164
let clock: Clock = ctx.banks_client.get_sysvar().await.unwrap();
166165
let rate_limit: InboxRateLimit = ctx
167-
.get_account_data_anchor(test_data.ntt.inbox_rate_limit(OTHER_CHAIN))
166+
.get_account_data_anchor(good_ntt.inbox_rate_limit(OTHER_CHAIN))
168167
.await;
169168

170169
rate_limit.rate_limit.capacity_at(clock.unix_timestamp)
@@ -175,39 +174,34 @@ async fn test_cancel() {
175174
let recipient = Keypair::new();
176175
let (mut ctx, test_data) = setup(Mode::Locking).await;
177176

178-
let (vaa0, msg0) =
179-
post_transfer_vaa(&mut ctx, &test_data, [0u8; 32], 1000, None, &recipient).await;
180-
let (vaa1, msg1) =
181-
post_transfer_vaa(&mut ctx, &test_data, [1u8; 32], 2000, None, &recipient).await;
177+
let (vaa0, msg0) = post_transfer_vaa(&mut ctx, [0u8; 32], 1000, None, &recipient).await;
178+
let (vaa1, msg1) = post_transfer_vaa(&mut ctx, [1u8; 32], 2000, None, &recipient).await;
182179

183-
let inbound_limit_before = inbound_capacity(&mut ctx, &test_data).await;
184-
let outbound_limit_before = outbound_capacity(&mut ctx, &test_data).await;
180+
let inbound_limit_before = inbound_capacity(&mut ctx).await;
181+
let outbound_limit_before = outbound_capacity(&mut ctx).await;
185182

186183
receive_message(
187-
&test_data.ntt,
188-
init_receive_message_accs(&mut ctx, &test_data, vaa0, OTHER_CHAIN, [0u8; 32]),
184+
&good_ntt,
185+
init_receive_message_accs(&mut ctx, vaa0, OTHER_CHAIN, [0u8; 32]),
189186
)
190187
.submit(&mut ctx)
191188
.await
192189
.unwrap();
193190

194191
redeem(
195-
&test_data.ntt,
192+
&good_ntt,
196193
init_redeem_accs(&mut ctx, &test_data, OTHER_CHAIN, msg0),
197194
RedeemArgs {},
198195
)
199196
.submit(&mut ctx)
200197
.await
201198
.unwrap();
202199

203-
assert_eq!(
204-
outbound_limit_before,
205-
outbound_capacity(&mut ctx, &test_data).await
206-
);
200+
assert_eq!(outbound_limit_before, outbound_capacity(&mut ctx).await);
207201

208202
assert_eq!(
209203
inbound_limit_before - 1000,
210-
inbound_capacity(&mut ctx, &test_data).await
204+
inbound_capacity(&mut ctx).await
211205
);
212206

213207
let outbox_item = Keypair::new();
@@ -216,40 +210,37 @@ async fn test_cancel() {
216210
init_transfer_accs_args(&mut ctx, &test_data, outbox_item.pubkey(), 7000, true);
217211

218212
approve_token_authority(
219-
&test_data.ntt,
213+
&good_ntt,
220214
&test_data.user_token_account,
221215
&test_data.user.pubkey(),
222216
&args,
223217
)
224218
.submit_with_signers(&[&test_data.user], &mut ctx)
225219
.await
226220
.unwrap();
227-
transfer(&test_data.ntt, accs, args, Mode::Locking)
221+
transfer(&good_ntt, accs, args, Mode::Locking)
228222
.submit_with_signers(&[&outbox_item], &mut ctx)
229223
.await
230224
.unwrap();
231225

232226
assert_eq!(
233227
outbound_limit_before - 7000,
234-
outbound_capacity(&mut ctx, &test_data).await
228+
outbound_capacity(&mut ctx).await
235229
);
236230

237231
// fully replenished
238-
assert_eq!(
239-
inbound_limit_before,
240-
inbound_capacity(&mut ctx, &test_data).await
241-
);
232+
assert_eq!(inbound_limit_before, inbound_capacity(&mut ctx).await);
242233

243234
receive_message(
244-
&test_data.ntt,
245-
init_receive_message_accs(&mut ctx, &test_data, vaa1, OTHER_CHAIN, [1u8; 32]),
235+
&good_ntt,
236+
init_receive_message_accs(&mut ctx, vaa1, OTHER_CHAIN, [1u8; 32]),
246237
)
247238
.submit(&mut ctx)
248239
.await
249240
.unwrap();
250241

251242
redeem(
252-
&test_data.ntt,
243+
&good_ntt,
253244
init_redeem_accs(&mut ctx, &test_data, OTHER_CHAIN, msg1),
254245
RedeemArgs {},
255246
)
@@ -259,12 +250,12 @@ async fn test_cancel() {
259250

260251
assert_eq!(
261252
outbound_limit_before - 5000,
262-
outbound_capacity(&mut ctx, &test_data).await
253+
outbound_capacity(&mut ctx).await
263254
);
264255

265256
assert_eq!(
266257
inbound_limit_before - 2000,
267-
inbound_capacity(&mut ctx, &test_data).await
258+
inbound_capacity(&mut ctx).await
268259
);
269260
}
270261

@@ -276,7 +267,6 @@ async fn test_wrong_recipient_ntt_manager() {
276267

277268
let (vaa0, msg0) = post_transfer_vaa(
278269
&mut ctx,
279-
&test_data,
280270
[0u8; 32],
281271
1000,
282272
Some(&Pubkey::default()),
@@ -285,15 +275,15 @@ async fn test_wrong_recipient_ntt_manager() {
285275
.await;
286276

287277
receive_message(
288-
&test_data.ntt,
289-
init_receive_message_accs(&mut ctx, &test_data, vaa0, OTHER_CHAIN, [0u8; 32]),
278+
&good_ntt,
279+
init_receive_message_accs(&mut ctx, vaa0, OTHER_CHAIN, [0u8; 32]),
290280
)
291281
.submit(&mut ctx)
292282
.await
293283
.unwrap();
294284

295285
let err = redeem(
296-
&test_data.ntt,
286+
&good_ntt,
297287
init_redeem_accs(&mut ctx, &test_data, OTHER_CHAIN, msg0),
298288
RedeemArgs {},
299289
)

solana/programs/example-native-token-transfers/tests/common/setup.rs

+6-13
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use spl_token::instruction::AuthorityType;
2222
use wormhole_anchor_sdk::wormhole::{BridgeData, FeeCollector};
2323

2424
use crate::sdk::{
25-
accounts::{Governance, Wormhole, NTT},
25+
accounts::{good_ntt, Governance, NTTAccounts},
2626
instructions::{
2727
admin::{register_transceiver, set_peer, RegisterTransceiver, SetPeer},
2828
initialize::{initialize, Initialize},
@@ -48,7 +48,6 @@ pub const THIS_CHAIN: u16 = 1;
4848
pub const OTHER_CHAIN: u16 = 2;
4949

5050
pub struct TestData {
51-
pub ntt: NTT,
5251
pub governance: Governance,
5352
pub program_owner: Keypair,
5453
pub mint_authority: Keypair,
@@ -137,7 +136,7 @@ pub async fn setup_ntt(ctx: &mut ProgramTestContext, test_data: &TestData, mode:
137136
spl_token::instruction::set_authority(
138137
&spl_token::ID,
139138
&test_data.mint,
140-
Some(&test_data.ntt.token_authority()),
139+
Some(&good_ntt.token_authority()),
141140
AuthorityType::MintTokens,
142141
&test_data.mint_authority.pubkey(),
143142
&[],
@@ -149,7 +148,7 @@ pub async fn setup_ntt(ctx: &mut ProgramTestContext, test_data: &TestData, mode:
149148
}
150149

151150
initialize(
152-
&test_data.ntt,
151+
&good_ntt,
153152
Initialize {
154153
payer: ctx.payer.pubkey(),
155154
deployer: test_data.program_owner.pubkey(),
@@ -167,7 +166,7 @@ pub async fn setup_ntt(ctx: &mut ProgramTestContext, test_data: &TestData, mode:
167166
.unwrap();
168167

169168
register_transceiver(
170-
&test_data.ntt,
169+
&good_ntt,
171170
RegisterTransceiver {
172171
payer: ctx.payer.pubkey(),
173172
owner: test_data.program_owner.pubkey(),
@@ -179,7 +178,7 @@ pub async fn setup_ntt(ctx: &mut ProgramTestContext, test_data: &TestData, mode:
179178
.unwrap();
180179

181180
set_transceiver_peer(
182-
&test_data.ntt,
181+
&good_ntt,
183182
SetTransceiverPeer {
184183
payer: ctx.payer.pubkey(),
185184
owner: test_data.program_owner.pubkey(),
@@ -194,7 +193,7 @@ pub async fn setup_ntt(ctx: &mut ProgramTestContext, test_data: &TestData, mode:
194193
.unwrap();
195194

196195
set_peer(
197-
&test_data.ntt,
196+
&good_ntt,
198197
SetPeer {
199198
payer: ctx.payer.pubkey(),
200199
owner: test_data.program_owner.pubkey(),
@@ -254,12 +253,6 @@ pub async fn setup_accounts(ctx: &mut ProgramTestContext, program_owner: Keypair
254253
.unwrap();
255254

256255
TestData {
257-
ntt: NTT {
258-
program: example_native_token_transfers::ID,
259-
wormhole: Wormhole {
260-
program: wormhole_anchor_sdk::wormhole::program::ID,
261-
},
262-
},
263256
governance: Governance {
264257
program: wormhole_governance::ID,
265258
},

0 commit comments

Comments
 (0)