// file: crates/ksp-store-api/unit_tests/model/raw_transaction.rs // version: 2 fn network() -> std::option::Option { return match crate::RawNetworkId::new("mainnet".to_owned()) { std::result::Result::Ok(value) => std::option::Option::Some(value), std::result::Result::Err(_) => std::option::Option::None, }; } fn payload() -> std::option::Option { let format = match crate::RawFormatId::new("ksp.solana.raw_transaction".to_owned()) { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return std::option::Option::None, }; return match crate::RawPayload::try_new( format, 1, b"canonical transaction including logs".to_vec().into_boxed_slice(), crate::RawContentHash::new([5_u8; 32]), ) { std::result::Result::Ok(value) => std::option::Option::Some(value), std::result::Result::Err(_) => std::option::Option::None, }; } fn provenance() -> std::option::Option { let provider = match crate::RawProvenanceCode::new("publicnode".to_owned()) { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return std::option::Option::None, }; let protocol = match crate::RawProvenanceCode::new("yellowstone_grpc".to_owned()) { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return std::option::Option::None, }; let method = match crate::RawProvenanceCode::new("transactions".to_owned()) { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return std::option::Option::None, }; let received_at = match crate::RawTimestamp::from_unix_millis(1_000) { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return std::option::Option::None, }; return std::option::Option::Some(crate::RawAcquisitionProvenance::new(provider, protocol, method, crate::RawAcquisitionOrigin::Backfill, received_at)); } #[test] fn raw_transaction_identity_is_network_plus_signature_and_payload_remains_whole() { let network = match network() { std::option::Option::Some(value) => value, std::option::Option::None => return, }; let payload = match payload() { std::option::Option::Some(value) => value, std::option::Option::None => return, }; let signature = crate::RawTransactionSignature::new([9_u8; 64]); let reference = crate::RawTransactionReference::new(network, signature); let transaction = crate::RawTransaction::new(reference, 42, std::option::Option::None, payload); assert_eq!(transaction.reference().network().as_str(), "mainnet"); assert_eq!(transaction.reference().signature(), signature); assert_eq!(transaction.slot(), 42); assert!(transaction.block_time().is_none()); assert_eq!(transaction.payload().bytes(), b"canonical transaction including logs"); return; } #[test] fn transaction_observation_is_separate_from_canonical_raw_payload() { let network = match network() { std::option::Option::Some(value) => value, std::option::Option::None => return, }; let provenance = match provenance() { std::option::Option::Some(value) => value, std::option::Option::None => return, }; let signature = crate::RawTransactionSignature::new([11_u8; 64]); let reference = crate::RawTransactionReference::new(network, signature); let observation = crate::RawTransactionObservation::new(crate::RawObservationKey::new([12_u8; 32]), reference, provenance); assert_eq!(observation.transaction().signature(), signature); assert_eq!(observation.observation_key().as_bytes(), &[12_u8; 32]); assert_eq!(observation.provenance().provider().as_str(), "publicnode"); return; }