SDK: Add test for illegal `Pubkey::create_with_seed` owners
This commit is contained in:
parent
3f35b32fba
commit
216983c50e
|
@ -613,4 +613,26 @@ mod tests {
|
|||
assert!(sysvar::id().is_native_program_id());
|
||||
assert!(vote::program::id().is_native_program_id());
|
||||
}
|
||||
|
||||
fn pubkey_from_seed_by_marker(marker: &[u8]) -> Result<Pubkey, PubkeyError> {
|
||||
let key = Pubkey::new_unique();
|
||||
let owner = Pubkey::default();
|
||||
|
||||
let mut to_fake = owner.to_bytes().to_vec();
|
||||
to_fake.extend_from_slice(marker);
|
||||
|
||||
let seed = &String::from_utf8(to_fake[..to_fake.len() - 32].to_vec()).expect("not utf8");
|
||||
let base = &Pubkey::try_from_slice(&to_fake[to_fake.len() - 32..]).unwrap();
|
||||
|
||||
Pubkey::create_with_seed(&key, seed, base)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_create_with_seed_rejects_illegal_owner() {
|
||||
assert_eq!(
|
||||
pubkey_from_seed_by_marker(PDA_MARKER),
|
||||
Err(PubkeyError::IllegalOwner)
|
||||
);
|
||||
assert!(pubkey_from_seed_by_marker(&PDA_MARKER[1..]).is_ok());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue