v0.4.7-pre.012

This commit is contained in:
2026-08-03 09:34:16 +02:00
parent 4b727e2990
commit 4d08c75b2b
13 changed files with 575 additions and 36 deletions

View File

@@ -1,5 +1,5 @@
// file: kb-pipeline/src/solana_metaplex_token_metadata_stateful.rs
// version: 2
// version: 3
//! Bounded Metaplex Token Metadata account reads and canonical state projections.
@@ -27,7 +27,7 @@ pub enum MetaplexTokenMetadataAccountKind {
}
/// One bounded Metaplex account read request.
#[derive(Clone, Debug, Eq, PartialEq)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MetaplexTokenMetadataStatefulReadRequest {
/// Endpoint role used for the HTTP RPC request.
pub query_role: std::string::String,
@@ -232,6 +232,28 @@ fn decode_snapshot(
#[cfg(test)]
mod tests {
#[test]
fn stateful_read_request_round_trips_through_json() {
let request = crate::MetaplexTokenMetadataStatefulReadRequest {
query_role: "rpc".to_string(),
account: kb_lib::MdPubkey("11111111111111111111111111111111".to_string()),
kind: crate::MetaplexTokenMetadataAccountKind::Metadata,
min_context_slot: std::option::Option::Some(42),
max_data_bytes: 1024,
};
let json = match serde_json::to_string(&request) {
std::result::Result::Ok(json) => json,
std::result::Result::Err(error) => panic!("request serialization failed: {error}"),
};
let decoded = match serde_json::from_str::<crate::MetaplexTokenMetadataStatefulReadRequest>(
json.as_str(),
) {
std::result::Result::Ok(decoded) => decoded,
std::result::Result::Err(error) => panic!("request deserialization failed: {error}"),
};
assert_eq!(decoded, request);
}
#[test]
fn rejects_zero_and_oversize_bounds_before_account_decoding() {
let request = crate::MetaplexTokenMetadataStatefulReadRequest {