X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fonion_message%2Ffunctional_tests.rs;h=012e279d2a6ffa52e279f15a746f8b227c0e9a6c;hb=d7d3b0ec754c0a6d276f1e46093ced962de8dfb1;hp=d1e892de016c35ef48b74c9ff844c2ebdb9ea526;hpb=150c87a089fedb69510498f28d5181eca1562d49;p=rust-lightning diff --git a/lightning/src/onion_message/functional_tests.rs b/lightning/src/onion_message/functional_tests.rs index d1e892de..012e279d 100644 --- a/lightning/src/onion_message/functional_tests.rs +++ b/lightning/src/onion_message/functional_tests.rs @@ -13,8 +13,7 @@ use crate::chain::keysinterface::{KeysInterface, Recipient}; use crate::ln::features::InitFeatures; use crate::ln::msgs::{self, DecodeError, OnionMessageHandler}; use super::{BlindedRoute, CustomOnionMessageContents, CustomOnionMessageHandler, Destination, OnionMessageContents, OnionMessenger, SendError}; -use crate::util::enforcing_trait_impls::EnforcingSigner; -use crate::util::ser::{ Writeable, Writer}; +use crate::util::ser::{Writeable, Writer}; use crate::util::test_utils; use bitcoin::network::constants::Network; @@ -25,7 +24,7 @@ use crate::sync::Arc; struct MessengerNode { keys_manager: Arc, - messenger: OnionMessenger, Arc, Arc>, + messenger: OnionMessenger, Arc, Arc>, logger: Arc, } @@ -167,6 +166,26 @@ fn too_big_packet_error() { assert_eq!(err, SendError::TooBigPacket); } +#[test] +fn we_are_intro_node() { + // If we are sending straight to a blinded route and we are the introduction node, we need to + // advance the blinded route by 1 hop so the second hop is the new introduction node. + let mut nodes = create_nodes(3); + let test_msg = TestCustomMessage {}; + + let secp_ctx = Secp256k1::new(); + let blinded_route = BlindedRoute::new(&[nodes[0].get_node_pk(), nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap(); + + nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg.clone()), None).unwrap(); + pass_along_path(&nodes, None); + + // Try with a two-hop blinded route where we are the introduction node. + let blinded_route = BlindedRoute::new(&[nodes[0].get_node_pk(), nodes[1].get_node_pk()], &*nodes[1].keys_manager, &secp_ctx).unwrap(); + nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), OnionMessageContents::Custom(test_msg), None).unwrap(); + nodes.remove(2); + pass_along_path(&nodes, None); +} + #[test] fn invalid_blinded_route_error() { // Make sure we error as expected if a provided blinded route has 0 or 1 hops.