solana-program-library/token/program-2022/tests/serialization.rs

38 lines
1.3 KiB
Rust

#![cfg(feature = "serde-traits")]
use {
solana_program::program_option::COption, solana_sdk::pubkey::Pubkey,
spl_token_2022::instruction, std::str::FromStr,
};
#[test]
fn token_program_serde() {
let inst = instruction::TokenInstruction::InitializeMint2 {
decimals: 0,
mint_authority: Pubkey::from_str("4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM").unwrap(),
freeze_authority: COption::Some(
Pubkey::from_str("8opHzTAnfzRpPEx21XtnrVTX28YQuCpAjcn1PczScKh").unwrap(),
),
};
let serialized = serde_json::to_string(&inst).unwrap();
assert_eq!(&serialized, "{\"InitializeMint2\":{\"decimals\":0,\"mint_authority\":\"4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM\",\"freeze_authority\":\"8opHzTAnfzRpPEx21XtnrVTX28YQuCpAjcn1PczScKh\"}}");
serde_json::from_str::<instruction::TokenInstruction>(&serialized).unwrap();
}
#[test]
fn token_program_serde_with_none() {
let inst = instruction::TokenInstruction::InitializeMintCloseAuthority {
close_authority: COption::None,
};
let serialized = serde_json::to_string(&inst).unwrap();
assert_eq!(
&serialized,
"{\"InitializeMintCloseAuthority\":{\"close_authority\":null}}"
);
serde_json::from_str::<instruction::TokenInstruction>(&serialized).unwrap();
}