#![cfg(feature = "test-sbf")]
use sol_middleware_program::generated::instructions::*;
use solana_program::pubkey::Pubkey;
use solana_program_test::tokio;
use solana_sdk::{
instruction::Instruction,
signature::{Keypair, Signer},
transaction::Transaction,
};
#[tokio::test]
async fn middleware_instruction_works() {
let mut context = program_test().start_with_context().await;
let target_program_id = Pubkey::new_unique();
let test_account = Keypair::new();
let instruction_data = vec![1, 2, 3, 4]; let ix = MiddlewareBuilder::new()
.target_program_id(target_program_id)
.data(instruction_data.clone())
.add_account_meta(test_account.pubkey(), true, true)
.instruction();
let payer = &context.payer;
let mut transaction = Transaction::new_with_payer(&[ix], Some(&payer.pubkey()));
let recent_blockhash = context.banks_client.get_latest_blockhash().await.unwrap();
transaction.sign(&[payer, &test_account], recent_blockhash);
context
.banks_client
.process_transaction(transaction)
.await
.unwrap();
}