0.3.15-pre.012-fix.004

This commit is contained in:
2026-09-16 23:49:07 +02:00
parent d56de4ace9
commit 1573273d27
8 changed files with 460 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-postgres-lib/unit_tests/raw_transaction.rs
// version: 6
// version: 7
fn network() -> ksp_store_api::RawNetworkId {
return match ksp_store_api::RawNetworkId::new("devnet") {
@@ -392,6 +392,43 @@ fn pre_005_purged_tombstone_matches_only_retained_identity_metadata() {
return;
}
#[test]
fn v0_3_15_pre_012_fix_004_content_conflict_diagnostic_classifies_raw_v1_components_without_payload_values() {
let stored = raw_transaction(
9,
br#"{"transaction":["AQID","base64"],"meta":{"err":null,"fee":5000,"logMessages":["left"],"rewards":[]},"version":0,"transactionIndex":7}"#,
7,
);
let incoming = raw_transaction(9, br#"{"transaction":["AQID","base64"],"meta":{"err":null,"fee":5000,"logMessages":["right"],"rewards":[{"lamports":1}]},"version":0,"transactionIndex":8}"#, 8);
let diagnostic = super::raw_transaction_content_conflict_diagnostic(&stored, &incoming);
assert!(!diagnostic.slot_mismatch);
assert!(!diagnostic.block_time_mismatch);
assert!(!diagnostic.format_id_mismatch);
assert!(!diagnostic.format_version_mismatch);
assert!(diagnostic.content_hash_mismatch);
assert!(diagnostic.payload_bytes_mismatch);
assert!(diagnostic.payload_diagnostic_available);
assert!(!diagnostic.payload_transaction_mismatch);
assert!(diagnostic.payload_meta_mismatch);
assert!(!diagnostic.payload_version_mismatch);
assert!(diagnostic.payload_transaction_index_mismatch);
assert!(!diagnostic.payload_other_mismatch);
assert_eq!(diagnostic.meta_mismatch_fields, "logMessages,rewards");
return;
}
#[test]
fn v0_3_15_pre_012_fix_004_content_conflict_diagnostic_collapses_unknown_meta_keys_to_other() {
let stored = raw_transaction(9, br#"{"transaction":["AQID","base64"],"meta":{"err":null,"futureField":1},"version":0}"#, 7);
let incoming = raw_transaction(9, br#"{"transaction":["BAUG","base64"],"meta":{"err":null,"futureField":2},"version":1}"#, 8);
let diagnostic = super::raw_transaction_content_conflict_diagnostic(&stored, &incoming);
assert!(diagnostic.payload_transaction_mismatch);
assert!(diagnostic.payload_meta_mismatch);
assert!(diagnostic.payload_version_mismatch);
assert_eq!(diagnostic.meta_mismatch_fields, "other");
return;
}
#[test]
fn pre_005_observation_idempotence_compares_reference_and_complete_provenance() {
let incoming_transaction = raw_transaction(8, &[1, 2, 3], 4);