v0.2.2-pre.002-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-onchain-transport-lib/unit_tests/rpc_accounts.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
#[test]
|
||||
fn account_config_serializes_all_common_fields() {
|
||||
@@ -22,7 +22,12 @@ fn program_accounts_config_preserves_filter_variants_and_flags() {
|
||||
crate::SolanaProgramAccountFilter::Memcmp(crate::SolanaMemcmpFilter::new(4, crate::SolanaMemcmpBytes::Base64("AQID".to_owned()))),
|
||||
crate::SolanaProgramAccountFilter::TokenAccountState,
|
||||
];
|
||||
let config = crate::SolanaProgramAccountsConfig::new(crate::SolanaAccountInfoConfig::default(), filters, std::option::Option::Some(true), std::option::Option::Some(true));
|
||||
let config = crate::SolanaProgramAccountsConfig::new(
|
||||
crate::SolanaAccountInfoConfig::default(),
|
||||
filters,
|
||||
std::option::Option::Some(true),
|
||||
std::option::Option::Some(true),
|
||||
);
|
||||
assert_eq!(
|
||||
config.to_json_value(),
|
||||
serde_json::json!({
|
||||
@@ -35,19 +40,51 @@ fn program_accounts_config_preserves_filter_variants_and_flags() {
|
||||
|
||||
#[test]
|
||||
fn account_wire_fixture_preserves_legacy_encoded_and_json_parsed_data() {
|
||||
let values: std::vec::Vec<serde_json::Value> = serde_json::from_str(include_str!("../fixtures/http/account_data.variants.json")).expect("fixture must decode");
|
||||
let values: std::vec::Vec<serde_json::Value> =
|
||||
serde_json::from_str(include_str!("../fixtures/http/account_data.variants.json")).expect("fixture must decode");
|
||||
let legacy = crate::SolanaAccount::decode_wire("fixture", values[0].clone()).expect("legacy account must decode");
|
||||
assert!(matches!(legacy.data(), crate::SolanaAccountData::LegacyBinary(_)));
|
||||
assert_eq!(legacy.space(), std::option::Option::None);
|
||||
let encoded = crate::SolanaAccount::decode_wire("fixture", values[1].clone()).expect("encoded account must decode");
|
||||
assert!(matches!(encoded.data(), crate::SolanaAccountData::Encoded { encoding: crate::SolanaAccountEncoding::Base64Zstd, .. }));
|
||||
let parsed = crate::SolanaAccount::decode_wire("fixture", values[2].clone()).expect("parsed account must decode");
|
||||
match parsed.data() {
|
||||
crate::SolanaAccountData::JsonParsed(value) => {
|
||||
assert_eq!(value.program(), "spl-token");
|
||||
assert_eq!(value.space(), 165);
|
||||
assert_eq!(value.parsed()["type"], serde_json::json!("account"));
|
||||
}
|
||||
_ => assert!(false, "jsonParsed fixture must retain parsed data"),
|
||||
assert!(matches!(parsed.data(), crate::SolanaAccountData::JsonParsed(_)), "jsonParsed fixture must retain parsed data");
|
||||
if let crate::SolanaAccountData::JsonParsed(value) = parsed.data() {
|
||||
assert_eq!(value.program(), "spl-token");
|
||||
assert_eq!(value.space(), 165);
|
||||
assert_eq!(value.parsed()["type"], serde_json::json!("account"));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn staged_largest_and_keyed_account_helpers_match_wire_shapes() {
|
||||
let config = crate::SolanaLargestAccountsConfig::new(
|
||||
std::option::Option::Some(crate::SolanaCommitment::Finalized),
|
||||
std::option::Option::Some(crate::SolanaLargestAccountsFilter::NonCirculating),
|
||||
std::option::Option::Some(true),
|
||||
);
|
||||
assert_eq!(config.to_json_value(), serde_json::json!({"commitment":"finalized","filter":"nonCirculating","sortResults":true}));
|
||||
|
||||
let keyed = crate::SolanaKeyedAccount::decode_wire(
|
||||
"fixture",
|
||||
serde_json::json!({
|
||||
"pubkey":"11111111111111111111111111111111",
|
||||
"account":{
|
||||
"lamports":42,
|
||||
"data":["", "base64"],
|
||||
"owner":"11111111111111111111111111111111",
|
||||
"executable":false,
|
||||
"rentEpoch":0,
|
||||
"space":0
|
||||
}
|
||||
}),
|
||||
)
|
||||
.expect("keyed account must decode");
|
||||
assert_eq!(keyed.pubkey().to_string(), "11111111111111111111111111111111");
|
||||
assert_eq!(keyed.account().lamports(), 42);
|
||||
|
||||
let balance = crate::SolanaAccountBalance::decode_wire("fixture", serde_json::json!({"address":"11111111111111111111111111111111","lamports":99}))
|
||||
.expect("account balance must decode");
|
||||
assert_eq!(balance.address().to_string(), "11111111111111111111111111111111");
|
||||
assert_eq!(balance.lamports(), 99);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user