Skip to content

Commit 1c90f3e

Browse files
authored
test: system program add hardcoded bump test (#1807)
1 parent cd98a81 commit 1c90f3e

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

programs/system/src/accounts/account_checks.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ use light_compressed_account::{
88
use pinocchio::{account_info::AccountInfo, program_error::ProgramError, pubkey::Pubkey};
99

1010
use crate::{
11-
invoke_cpi::account::CpiContextAccount, processor::sol_compression::SOL_POOL_PDA_SEED, Result,
11+
invoke_cpi::account::CpiContextAccount,
12+
processor::sol_compression::{SOL_POOL_PDA_BUMP, SOL_POOL_PDA_SEED},
13+
Result,
1214
};
1315

1416
pub fn check_fee_payer(fee_payer: Option<&AccountInfo>) -> Result<&AccountInfo> {
@@ -48,7 +50,7 @@ pub fn check_anchor_option_sol_pool_pda(
4850
None
4951
} else {
5052
check_pda_seeds_with_bump(
51-
&[SOL_POOL_PDA_SEED, &[255]][..],
53+
&[SOL_POOL_PDA_SEED, &[SOL_POOL_PDA_BUMP]][..],
5254
&crate::ID,
5355
option_sol_pool_pda,
5456
)?;

programs/system/src/constants.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,25 @@ impl TryFrom<&[u8]> for InstructionDiscriminator {
3636
}
3737
}
3838
}
39+
40+
#[cfg(test)]
41+
mod test {
42+
use light_compressed_account::constants::ACCOUNT_COMPRESSION_PROGRAM_ID;
43+
use solana_pubkey::Pubkey;
44+
45+
use super::*;
46+
47+
fn check_hardcoded_bump(program_id: Pubkey, seeds: &[&[u8]], bump: u8) -> bool {
48+
let (_, found_bump) = Pubkey::find_program_address(seeds, &program_id);
49+
found_bump == bump
50+
}
51+
52+
#[test]
53+
fn test_account_compression_cpi_authority_bump() {
54+
assert!(check_hardcoded_bump(
55+
ACCOUNT_COMPRESSION_PROGRAM_ID.into(),
56+
&[CPI_AUTHORITY_PDA_SEED],
57+
CPI_AUTHORITY_PDA_BUMP
58+
));
59+
}
60+
}

programs/system/src/processor/sol_compression.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::{
1515
#[aligned_sized(anchor)]
1616
pub struct CompressedSolPda {}
1717

18+
pub const SOL_POOL_PDA_BUMP: u8 = 255;
1819
pub const SOL_POOL_PDA_SEED: &[u8] = b"sol_pool_pda";
1920

2021
pub fn compress_or_decompress_lamports<
@@ -97,9 +98,30 @@ pub fn compress_lamports<
9798
}
9899

99100
pub fn transfer_lamports(from: &AccountInfo, to: &AccountInfo, lamports: u64) -> crate::Result<()> {
100-
let bump = &[255];
101+
let bump = &[SOL_POOL_PDA_BUMP];
101102
let seed_array = [Seed::from(SOL_POOL_PDA_SEED), Seed::from(bump)];
102103
let signer = Signer::from(&seed_array);
103104
let instruction = pinocchio_system::instructions::Transfer { from, to, lamports };
104105
instruction.invoke_signed(&[signer])
105106
}
107+
108+
#[cfg(test)]
109+
mod test {
110+
use solana_pubkey::Pubkey;
111+
112+
use super::*;
113+
114+
fn check_hardcoded_bump(program_id: Pubkey, seeds: &[&[u8]], bump: u8) -> bool {
115+
let (_, found_bump) = Pubkey::find_program_address(seeds, &program_id);
116+
found_bump == bump
117+
}
118+
119+
#[test]
120+
fn test_check_anchor_option_sol_pool_pda() {
121+
assert!(check_hardcoded_bump(
122+
crate::ID.into(),
123+
&[SOL_POOL_PDA_SEED],
124+
SOL_POOL_PDA_BUMP
125+
));
126+
}
127+
}

0 commit comments

Comments
 (0)