Files
khadhroony-bot3/ks-lib/tests/external_solana_program_metadata_account_api.rs
2026-08-09 19:34:08 +02:00

36 lines
1.6 KiB
Rust

// file: ks-lib/tests/external_solana_program_metadata_account_api.rs
// version: 2
//! Downstream-style compilation contract for Solana Program Metadata account decoders.
#[test]
fn external_consumers_decode_accounts_only_through_crate_root_exports() {
let account = solana_pubkey::Pubkey::new_from_array([17_u8; 32]);
let program = solana_pubkey::Pubkey::new_from_array([18_u8; 32]);
let authority = solana_pubkey::Pubkey::new_from_array([19_u8; 32]);
let seed = ks_lib::DcMetadataSpmSeed::from_bytes([20_u8; 16]);
let mut data = vec![0_u8; ks_lib::DC_METADATA_SPM_BUFFER_HEADER_BYTES];
data[0] = ks_lib::DcMetadataSpmAccountDiscriminator::Buffer.wire_value();
data[1..33].copy_from_slice(&program.to_bytes());
data[33..65].copy_from_slice(&authority.to_bytes());
data[65] = 1;
data[66..82].copy_from_slice(seed.as_bytes());
data.extend_from_slice(&[21_u8, 22_u8]);
let result = ks_lib::decoder_metadata_solana_program_metadata_decode_account(
account.to_string().as_str(),
ks_program_ids::METADATA_SOLANA_PROGRAM_METADATA_PROGRAM_ID,
&data,
);
assert!(result.is_ok());
if let std::result::Result::Ok(ks_lib::DcMetadataSpmAccountSnapshot::Buffer(snapshot)) = result
{
assert_eq!(snapshot.account, account.to_string());
assert_eq!(snapshot.program, std::option::Option::Some(program.to_string()));
assert_eq!(snapshot.authority, std::option::Option::Some(authority.to_string()));
assert_eq!(snapshot.data, vec![21_u8, 22_u8]);
} else {
return;
}
assert_eq!(ks_lib::DC_METADATA_SPM_MAX_ACCOUNT_BYTES, 10_485_760);
}