// 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); }