|
| 1 | +use quasar_svm::{Account, Instruction, Pubkey, QuasarSvm}; |
| 2 | +use solana_address::Address; |
| 3 | + |
| 4 | +use quasar_checking_accounts_client::CheckAccountsInstruction; |
| 5 | + |
| 6 | +fn setup() -> QuasarSvm { |
| 7 | + let elf = include_bytes!("../target/deploy/quasar_checking_accounts.so"); |
| 8 | + QuasarSvm::new().with_program(&Pubkey::from(crate::ID), elf) |
| 9 | +} |
| 10 | + |
| 11 | +fn signer(address: Pubkey) -> Account { |
| 12 | + quasar_svm::token::create_keyed_system_account(&address, 10_000_000_000) |
| 13 | +} |
| 14 | + |
| 15 | +fn system_account(address: Pubkey, lamports: u64) -> Account { |
| 16 | + Account { |
| 17 | + address, |
| 18 | + lamports, |
| 19 | + data: vec![], |
| 20 | + owner: quasar_svm::system_program::ID, |
| 21 | + executable: false, |
| 22 | + } |
| 23 | +} |
| 24 | + |
| 25 | +fn program_owned_account(address: Pubkey, lamports: u64) -> Account { |
| 26 | + Account { |
| 27 | + address, |
| 28 | + lamports, |
| 29 | + data: vec![0u8; 32], |
| 30 | + owner: Pubkey::from(crate::ID), |
| 31 | + executable: false, |
| 32 | + } |
| 33 | +} |
| 34 | + |
| 35 | +#[test] |
| 36 | +fn test_check_accounts_succeeds() { |
| 37 | + let mut svm = setup(); |
| 38 | + |
| 39 | + let payer = Pubkey::new_unique(); |
| 40 | + let account_to_create = Pubkey::new_unique(); |
| 41 | + let account_to_change = Pubkey::new_unique(); |
| 42 | + let system_program = quasar_svm::system_program::ID; |
| 43 | + |
| 44 | + let instruction: Instruction = CheckAccountsInstruction { |
| 45 | + payer: Address::from(payer.to_bytes()), |
| 46 | + account_to_create: Address::from(account_to_create.to_bytes()), |
| 47 | + account_to_change: Address::from(account_to_change.to_bytes()), |
| 48 | + system_program: Address::from(system_program.to_bytes()), |
| 49 | + } |
| 50 | + .into(); |
| 51 | + |
| 52 | + let result = svm.process_instruction( |
| 53 | + &instruction, |
| 54 | + &[ |
| 55 | + signer(payer), |
| 56 | + system_account(account_to_create, 0), |
| 57 | + program_owned_account(account_to_change, 1_000_000), |
| 58 | + ], |
| 59 | + ); |
| 60 | + |
| 61 | + result.assert_success(); |
| 62 | +} |
0 commit comments