From 1bdf36d042f676a939bdd643ddba969b233cd637 Mon Sep 17 00:00:00 2001 From: Julian Meyer Date: Thu, 8 Jan 2026 17:02:18 +0000 Subject: [PATCH] chore: add test to ensure old metadata decodes This test ensures that old format metadata decodes properly so we know the new parsing is backwards compatible with the old format. --- crates/flashtypes/src/block.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/flashtypes/src/block.rs b/crates/flashtypes/src/block.rs index c6aec69a..701aa414 100644 --- a/crates/flashtypes/src/block.rs +++ b/crates/flashtypes/src/block.rs @@ -92,6 +92,27 @@ mod tests { assert_eq!(decoded.metadata.block_number, 1234); } + #[rstest] + #[case::plain(encode_plain)] + #[case::brotli(encode_brotli)] + fn try_decode_old_format_still_decodes(#[case] encoder: fn(&FlashblocksPayloadV1) -> Bytes) { + // old format should still decode + let payload = sample_payload(json!({ + "block_number": 1234u64, + "receipts": {}, + "new_account_balances": {}, + })); + + let decoded = + Flashblock::try_decode_message(encoder(&payload)).expect("payload should decode"); + + assert_eq!(decoded.payload_id, payload.payload_id); + assert_eq!(decoded.index, payload.index); + assert_eq!(decoded.base, payload.base); + assert_eq!(decoded.diff, payload.diff); + assert_eq!(decoded.metadata.block_number, 1234); + } + #[rstest] #[case::invalid_brotli(Bytes::from_static(b"not brotli data"))] #[case::missing_metadata(encode_plain(&sample_payload(json!({