123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- use close_account_api::prelude::*;
- use solana_program::hash::Hash;
- use solana_program_test::{processor, BanksClient, ProgramTest};
- use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
- use steel::*;
- async fn setup() -> (BanksClient, Keypair, Hash) {
- let mut program_test = ProgramTest::new(
- "close-account",
- close_account_api::ID,
- processor!(close_account_program::process_instruction),
- );
- program_test.prefer_bpf(true);
- program_test.start().await
- }
- #[tokio::test]
- async fn run_test() {
- // Setup test
- let (mut banks, payer, blockhash) = setup().await;
- let name = "foobarbaz";
- let account = User::new(name).unwrap();
- // Submit initialize transaction.
- let ix = close_account_api::sdk::create_account(payer.pubkey(), CreateAccount(account.name));
- let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash);
- let res = banks.process_transaction(tx).await;
- assert!(res.is_ok());
- let user_pda = User::pda(payer.pubkey()).0;
- let pda_account = banks.get_account(user_pda).await.unwrap().unwrap();
- let name_deser = User::try_from_bytes(&pda_account.data).unwrap();
- assert_eq!(pda_account.owner, close_account_api::ID);
- assert_eq!(name_deser.to_string().unwrap().as_str(), name);
- // Test Closing an Account
- // Submit initialize transaction.
- let ix = close_account_api::sdk::close_account(payer.pubkey());
- let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash);
- let res = banks.process_transaction(tx).await;
- assert!(res.is_ok());
- let pda_account = banks.get_account(user_pda).await.unwrap();
- assert!(pda_account.is_none());
- }
|