v0.4.8-pre.004
This commit is contained in:
35
kb-lib/tests/external_solana_program_metadata_account_api.rs
Normal file
35
kb-lib/tests/external_solana_program_metadata_account_api.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
// file: kb-lib/tests/external_solana_program_metadata_account_api.rs
|
||||
// version: 1
|
||||
|
||||
//! 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 = kb_lib::DcMetadataSpmSeed::from_bytes([20_u8; 16]);
|
||||
let mut data = vec![0_u8; kb_lib::DC_METADATA_SPM_BUFFER_HEADER_BYTES];
|
||||
data[0] = kb_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 = kb_lib::decoder_metadata_solana_program_metadata_decode_account(
|
||||
account.to_string().as_str(),
|
||||
kb_program_ids::METADATA_SOLANA_PROGRAM_METADATA_PROGRAM_ID,
|
||||
&data,
|
||||
);
|
||||
assert!(result.is_ok());
|
||||
if let std::result::Result::Ok(kb_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!(kb_lib::DC_METADATA_SPM_MAX_ACCOUNT_BYTES, 10_485_760);
|
||||
}
|
||||
Reference in New Issue
Block a user