42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use {
|
|
solana_program_test::ProgramTest,
|
|
solana_sdk::{
|
|
bpf_loader, instruction::Instruction, pubkey::Pubkey, signature::Signer,
|
|
transaction::Transaction,
|
|
},
|
|
};
|
|
|
|
#[tokio::test]
|
|
async fn test_add_bpf_program() {
|
|
let program_id = Pubkey::new_unique();
|
|
|
|
let mut program_test = ProgramTest::default();
|
|
program_test.prefer_bpf(true);
|
|
program_test.add_program("noop_program", program_id, None);
|
|
|
|
let mut context = program_test.start_with_context().await;
|
|
|
|
// Assert the program is a BPF Loader 2 program.
|
|
let program_account = context
|
|
.banks_client
|
|
.get_account(program_id)
|
|
.await
|
|
.unwrap()
|
|
.unwrap();
|
|
assert_eq!(program_account.owner, bpf_loader::id());
|
|
|
|
// Invoke the program.
|
|
let instruction = Instruction::new_with_bytes(program_id, &[], Vec::new());
|
|
let transaction = Transaction::new_signed_with_payer(
|
|
&[instruction],
|
|
Some(&context.payer.pubkey()),
|
|
&[&context.payer],
|
|
context.last_blockhash,
|
|
);
|
|
context
|
|
.banks_client
|
|
.process_transaction(transaction)
|
|
.await
|
|
.unwrap();
|
|
}
|