68 lines
2.2 KiB
Rust
68 lines
2.2 KiB
Rust
#![cfg(feature = "test-bpf")]
|
|
|
|
mod helpers;
|
|
|
|
use helpers::*;
|
|
use solana_sdk::{
|
|
instruction::InstructionError, signature::Keypair, signature::Signer, transaction::Transaction,
|
|
transaction::TransactionError, transport::TransportError,
|
|
};
|
|
use spl_stake_pool::*;
|
|
|
|
#[tokio::test]
|
|
async fn test_update_pool_balance() {
|
|
let (mut banks_client, payer, recent_blockhash) = program_test().start().await;
|
|
let stake_pool_accounts = StakePoolAccounts::new();
|
|
stake_pool_accounts
|
|
.initialize_stake_pool(&mut banks_client, &payer, &recent_blockhash)
|
|
.await
|
|
.unwrap();
|
|
|
|
// TODO: Waiting for the ability to advance clock (or modify account data) to finish the tests
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_update_pool_balance_with_wrong_validator_stake_list() {
|
|
let (mut banks_client, payer, recent_blockhash) = program_test().start().await;
|
|
let stake_pool_accounts = StakePoolAccounts::new();
|
|
stake_pool_accounts
|
|
.initialize_stake_pool(&mut banks_client, &payer, &recent_blockhash)
|
|
.await
|
|
.unwrap();
|
|
|
|
let wrong_stake_list_storage = Keypair::new();
|
|
let mut transaction = Transaction::new_with_payer(
|
|
&[instruction::update_pool_balance(
|
|
&id(),
|
|
&stake_pool_accounts.stake_pool.pubkey(),
|
|
&wrong_stake_list_storage.pubkey(),
|
|
)
|
|
.unwrap()],
|
|
Some(&payer.pubkey()),
|
|
);
|
|
|
|
transaction.sign(&[&payer], recent_blockhash);
|
|
let transaction_error = banks_client
|
|
.process_transaction(transaction)
|
|
.await
|
|
.err()
|
|
.unwrap();
|
|
|
|
match transaction_error {
|
|
TransportError::TransactionError(TransactionError::InstructionError(
|
|
_,
|
|
InstructionError::Custom(error_index),
|
|
)) => {
|
|
let program_error = error::StakePoolError::InvalidValidatorStakeList as u32;
|
|
assert_eq!(error_index, program_error);
|
|
}
|
|
_ => panic!("Wrong error occurs while try to update pool balance with wrong validator stake list account"),
|
|
}
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_update_pool_balance_with_uninitialized_validator_stake_list() {} // TODO
|
|
|
|
#[tokio::test]
|
|
async fn test_update_pool_balance_with_out_of_dated_validators_balances() {} // TODO
|