diff --git a/lightning-background-processor/Cargo.toml b/lightning-background-processor/Cargo.toml index 1659ffd3ea3..59782aea443 100644 --- a/lightning-background-processor/Cargo.toml +++ b/lightning-background-processor/Cargo.toml @@ -12,6 +12,7 @@ edition = "2018" [dependencies] bitcoin = "0.27" lightning = { version = "0.0.99", path = "../lightning", features = ["allow_wallclock_use"] } +lightning-invoice = { version = "0.7.0", path = "../lightning-invoice" } lightning-persister = { version = "0.0.99", path = "../lightning-persister" } [dev-dependencies] diff --git a/lightning-background-processor/src/lib.rs b/lightning-background-processor/src/lib.rs index cb733ad458e..991aa01aea1 100644 --- a/lightning-background-processor/src/lib.rs +++ b/lightning-background-processor/src/lib.rs @@ -119,7 +119,7 @@ impl BackgroundProcessor { Descriptor: 'static + SocketDescriptor + Send + Sync, CMH: 'static + Deref + Send + Sync, RMH: 'static + Deref + Send + Sync, - EH: 'static + EventHandler + Send + Sync, + EH: 'static + EventHandler + Send, CMP: 'static + Send + ChannelManagerPersister, M: 'static + Deref> + Send + Sync, CM: 'static + Deref> + Send + Sync, @@ -248,10 +248,13 @@ mod tests { use lightning::ln::features::InitFeatures; use lightning::ln::msgs::{ChannelMessageHandler, Init}; use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor}; + use lightning::routing::network_graph::NetworkGraph; use lightning::util::config::UserConfig; use lightning::util::events::{Event, MessageSendEventsProvider, MessageSendEvent}; use lightning::util::ser::Writeable; use lightning::util::test_utils; + use lightning_invoice::payment::InvoicePayer; + use lightning_invoice::utils::DefaultRouter; use lightning_persister::FilesystemPersister; use std::fs; use std::path::PathBuf; @@ -552,4 +555,19 @@ mod tests { assert!(bg_processor.stop().is_ok()); } + + #[test] + fn test_invoice_payer() { + let nodes = create_nodes(2, "test_invoice_payer".to_string()); + + // Initiate the background processors to watch each node. + let data_dir = nodes[0].persister.get_data_dir(); + let persister = move |node: &ChannelManager, Arc, Arc, Arc, Arc>| FilesystemPersister::persist_manager(data_dir.clone(), node); + let router = DefaultRouter::new(Arc::clone(&nodes[0].logger)); + let network_graph = Arc::new(NetworkGraph::new(genesis_block(Network::Testnet).header.block_hash())); + let event_handler = |_: &_| {}; + let (_, event_handler) = InvoicePayer::new(Arc::clone(&nodes[0].node), router, network_graph, Arc::clone(&nodes[0].logger), event_handler); + let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone()); + assert!(bg_processor.stop().is_ok()); + } }