diff --git a/lightning/src/ln/msgs.rs b/lightning/src/ln/msgs.rs index 59b2339ef3d..613781232a3 100644 --- a/lightning/src/ln/msgs.rs +++ b/lightning/src/ln/msgs.rs @@ -3217,7 +3217,7 @@ mod tests { use hex::DisplayHex; use crate::ln::types::{ChannelId, PaymentPreimage, PaymentHash, PaymentSecret}; use crate::ln::features::{ChannelFeatures, ChannelTypeFeatures, InitFeatures, NodeFeatures}; - use crate::ln::msgs::{self, FinalOnionHopData, OnionErrorPacket, CommonOpenChannelFields, CommonAcceptChannelFields, TrampolineOnionPacket}; + use crate::ln::msgs::{self, FinalOnionHopData, OnionErrorPacket, CommonOpenChannelFields, CommonAcceptChannelFields, TrampolineOnionPacket, OutboundTrampolinePayload}; use crate::ln::msgs::SocketAddress; use crate::routing::gossip::{NodeAlias, NodeId}; use crate::util::ser::{BigSize, FixedLengthReader, Hostname, LengthReadable, Readable, ReadableArgs, TransactionU16LenLimited, Writeable}; @@ -3243,6 +3243,7 @@ mod tests { #[cfg(feature = "std")] use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6, ToSocketAddrs}; + use crate::blinded_path::{BlindedPath, Direction, IntroductionNode}; #[cfg(feature = "std")] use crate::ln::msgs::SocketAddressParseError; @@ -4585,6 +4586,25 @@ mod tests { assert_eq!(encoded_trampoline_packet, expected_eclair_trampoline_packet); } + #[test] + fn encoding_outbound_trampoline_payload() { + let public_key = PublicKey::from_slice(&>::from_hex("02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619").unwrap()).unwrap(); + let trampoline_payload = OutboundTrampolinePayload::BlindedForward { + amt_to_forward: 100000000, + outgoing_cltv_value: 800000, + payment_paths: vec![ + BlindedPath { + introduction_node: IntroductionNode::DirectedShortChannelId(Direction::NodeOne, 12), + blinding_point: public_key, + blinded_hops: vec![], + } + ], + invoice_features: None, + }; + let serialized_payload = trampoline_payload.encode().to_lower_hex_string(); + assert_eq!(serialized_payload, "3c020405f5e10004030c3500fe000102362b00000000000000000c02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f28368661900"); + } + #[test] fn query_channel_range_end_blocknum() { let tests: Vec<(u32, u32, u32)> = vec![