Skip to content

Commit 32044ca

Browse files
committed
Test Trampoline payload serialization.
1 parent 12cf38e commit 32044ca

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

lightning/src/ln/onion_route_tests.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ use crate::ln::channel::EXPIRE_PREV_CONFIG_TICKS;
1919
use crate::ln::channelmanager::{HTLCForwardInfo, FailureCode, CLTV_FAR_FAR_AWAY, DISABLE_GOSSIP_TICKS, MIN_CLTV_EXPIRY_DELTA, PendingAddHTLCInfo, PendingHTLCInfo, PendingHTLCRouting, PaymentId, RecipientOnionFields};
2020
use crate::ln::onion_utils;
2121
use crate::routing::gossip::{NetworkUpdate, RoutingFees};
22-
use crate::routing::router::{get_route, PaymentParameters, Route, RouteParameters, RouteHint, RouteHintHop};
23-
use crate::ln::features::{InitFeatures, Bolt11InvoiceFeatures};
22+
use crate::routing::router::{get_route, PaymentParameters, Route, RouteParameters, RouteHint, RouteHintHop, Path, RouteHop};
23+
use crate::ln::features::{InitFeatures, Bolt11InvoiceFeatures, NodeFeatures, ChannelFeatures};
2424
use crate::ln::msgs;
25-
use crate::ln::msgs::{ChannelMessageHandler, ChannelUpdate};
25+
use crate::ln::msgs::{ChannelMessageHandler, ChannelUpdate, FinalOnionHopData, OutboundOnionPayload, OutboundTrampolinePayload};
2626
use crate::ln::wire::Encode;
2727
use crate::util::ser::{Writeable, Writer, BigSize};
2828
use crate::util::test_utils;
@@ -35,11 +35,12 @@ use bitcoin::hashes::hmac::{Hmac, HmacEngine};
3535
use bitcoin::hashes::sha256::Hash as Sha256;
3636

3737
use bitcoin::secp256k1;
38-
use bitcoin::secp256k1::{Secp256k1, SecretKey};
38+
use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
3939

4040
use crate::io;
4141
use crate::prelude::*;
4242
use core::default::Default;
43+
use bitcoin::hashes::hex::FromHex;
4344

4445
use crate::ln::functional_test_utils::*;
4546

@@ -966,6 +967,25 @@ fn test_always_create_tlv_format_onion_payloads() {
966967
}
967968
}
968969

970+
#[test]
971+
fn test_trampoline_onion_payload_serialization() {
972+
// As per https://github.com/lightning/bolts/blob/c01d2e6267d4a8d1095f0f1188970055a9a22d29/bolt04/trampoline-payment-onion-test.json#L3
973+
let trampoline_payload = OutboundTrampolinePayload::Forward {
974+
amt_to_forward: 100000000,
975+
outgoing_cltv_value: 800000,
976+
outgoing_node_id: PublicKey::from_slice(&<Vec<u8>>::from_hex("02edabbd16b41c8371b92ef2f04c1185b4f03b6dcd52ba9b78d9d7c89c8f221145").unwrap()).unwrap(),
977+
};
978+
979+
let slice_to_hex = |slice: &[u8]| {
980+
slice.iter()
981+
.map(|b| format!("{:02x}", b).to_string())
982+
.collect::<String>()
983+
};
984+
985+
let carol_payload_hex = slice_to_hex(&trampoline_payload.encode());
986+
assert_eq!(carol_payload_hex, "2e020405f5e10004030c35000e2102edabbd16b41c8371b92ef2f04c1185b4f03b6dcd52ba9b78d9d7c89c8f221145");
987+
}
988+
969989
fn do_test_fail_htlc_backwards_with_reason(failure_code: FailureCode) {
970990

971991
let chanmon_cfgs = create_chanmon_cfgs(2);

0 commit comments

Comments
 (0)