Skip to content

Commit 736cab5

Browse files
committed
f cleanup test - make it a loop and remove old XXX
1 parent 97a761a commit 736cab5

1 file changed

Lines changed: 48 additions & 67 deletions

File tree

lightning/src/ln/offers_tests.rs

Lines changed: 48 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -2580,7 +2580,7 @@ fn no_double_pay_with_stale_channelmanager() {
25802580

25812581
#[test]
25822582
fn creates_and_pays_for_phantom_offer() {
2583-
// XXX: share expanded key
2583+
// Tests that we can pay a "phantom offer" to any participating node.
25842584
let mut chanmon_cfgs = create_chanmon_cfgs(1);
25852585
chanmon_cfgs.append(&mut create_phantom_chanmon_cfgs(2));
25862586
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
@@ -2618,70 +2618,51 @@ fn creates_and_pays_for_phantom_offer() {
26182618
assert_eq!(b_path_count, 1);
26192619
assert_eq!(c_path_count, 1);
26202620

2621-
// First, pay via node B
2622-
let payment_id = PaymentId([1; 32]);
2623-
nodes[0].node.pay_for_offer(&offer, None, payment_id, Default::default()).unwrap();
2624-
expect_recent_payment!(nodes[0], RecentPaymentDetails::AwaitingInvoice, payment_id);
2625-
2626-
let onion_message = nodes[0].onion_messenger.next_onion_message_for_peer(node_b_id).unwrap();
2627-
let _discard = nodes[0].onion_messenger.next_onion_message_for_peer(node_c_id).unwrap();
2628-
nodes[1].onion_messenger.handle_onion_message(node_a_id, &onion_message);
2629-
2630-
let (invoice_request, _) = extract_invoice_request(&nodes[1], &onion_message);
2631-
let payment_context = PaymentContext::Bolt12Offer(Bolt12OfferContext {
2632-
offer_id: offer.id(),
2633-
invoice_request: InvoiceRequestFields {
2634-
payer_signing_pubkey: invoice_request.payer_signing_pubkey(),
2635-
quantity: None,
2636-
payer_note_truncated: None,
2637-
human_readable_name: None,
2638-
},
2639-
});
2640-
2641-
let onion_message = nodes[1].onion_messenger.next_onion_message_for_peer(node_a_id).unwrap();
2642-
nodes[0].onion_messenger.handle_onion_message(node_b_id, &onion_message);
2643-
2644-
let (invoice, _) = extract_invoice(&nodes[0], &onion_message);
2645-
assert_eq!(invoice.amount_msats(), 10_000_000);
2646-
2647-
route_bolt12_payment(&nodes[0], &[&nodes[1]], &invoice);
2648-
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Pending, payment_id);
2649-
2650-
claim_bolt12_payment(&nodes[0], &[&nodes[1]], payment_context, &invoice);
2651-
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Fulfilled, payment_id);
2652-
2653-
// Then pay again via node C
2654-
assert!(nodes[0].onion_messenger.next_onion_message_for_peer(node_b_id).is_none());
2655-
assert!(nodes[0].onion_messenger.next_onion_message_for_peer(node_c_id).is_none());
2656-
2657-
let payment_id = PaymentId([2; 32]);
2658-
nodes[0].node.pay_for_offer(&offer, None, payment_id, Default::default()).unwrap();
2659-
expect_recent_payment!(nodes[0], RecentPaymentDetails::AwaitingInvoice, payment_id);
2660-
2661-
let onion_message = nodes[0].onion_messenger.next_onion_message_for_peer(node_c_id).unwrap();
2662-
let _discard = nodes[0].onion_messenger.next_onion_message_for_peer(node_b_id).unwrap();
2663-
nodes[2].onion_messenger.handle_onion_message(node_a_id, &onion_message);
2664-
2665-
let (invoice_request, _) = extract_invoice_request(&nodes[2], &onion_message);
2666-
let payment_context = PaymentContext::Bolt12Offer(Bolt12OfferContext {
2667-
offer_id: offer.id(),
2668-
invoice_request: InvoiceRequestFields {
2669-
payer_signing_pubkey: invoice_request.payer_signing_pubkey(),
2670-
quantity: None,
2671-
payer_note_truncated: None,
2672-
human_readable_name: None,
2673-
},
2674-
});
2675-
2676-
let onion_message = nodes[2].onion_messenger.next_onion_message_for_peer(node_a_id).unwrap();
2677-
nodes[0].onion_messenger.handle_onion_message(node_c_id, &onion_message);
2678-
2679-
let (invoice, _) = extract_invoice(&nodes[0], &onion_message);
2680-
assert_eq!(invoice.amount_msats(), 10_000_000);
2681-
2682-
route_bolt12_payment(&nodes[0], &[&nodes[2]], &invoice);
2683-
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Pending, payment_id);
2684-
2685-
claim_bolt12_payment(&nodes[0], &[&nodes[2]], payment_context, &invoice);
2686-
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Fulfilled, payment_id);
2621+
// Pay twice, first via node B (the node that actually built the offer) then pay via node C
2622+
// (which won't have seen the offer until it receives the invoice_request).
2623+
for (payment_id, recipient) in [([1; 32], &nodes[1]), ([2; 32], &nodes[2])] {
2624+
let payment_id = PaymentId(payment_id);
2625+
nodes[0].node.pay_for_offer(&offer, None, payment_id, Default::default()).unwrap();
2626+
expect_recent_payment!(nodes[0], RecentPaymentDetails::AwaitingInvoice, payment_id);
2627+
2628+
let recipient_id = recipient.node.get_our_node_id();
2629+
let non_recipient_id = if node_b_id == recipient_id {
2630+
node_c_id
2631+
} else {
2632+
node_b_id
2633+
};
2634+
2635+
let onion_message =
2636+
nodes[0].onion_messenger.next_onion_message_for_peer(recipient_id).unwrap();
2637+
let _discard =
2638+
nodes[0].onion_messenger.next_onion_message_for_peer(non_recipient_id).unwrap();
2639+
recipient.onion_messenger.handle_onion_message(node_a_id, &onion_message);
2640+
2641+
let (invoice_request, _) = extract_invoice_request(&recipient, &onion_message);
2642+
let payment_context = PaymentContext::Bolt12Offer(Bolt12OfferContext {
2643+
offer_id: offer.id(),
2644+
invoice_request: InvoiceRequestFields {
2645+
payer_signing_pubkey: invoice_request.payer_signing_pubkey(),
2646+
quantity: None,
2647+
payer_note_truncated: None,
2648+
human_readable_name: None,
2649+
},
2650+
});
2651+
2652+
let onion_message =
2653+
recipient.onion_messenger.next_onion_message_for_peer(node_a_id).unwrap();
2654+
nodes[0].onion_messenger.handle_onion_message(recipient_id, &onion_message);
2655+
2656+
let (invoice, _) = extract_invoice(&nodes[0], &onion_message);
2657+
assert_eq!(invoice.amount_msats(), 10_000_000);
2658+
2659+
route_bolt12_payment(&nodes[0], &[recipient], &invoice);
2660+
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Pending, payment_id);
2661+
2662+
claim_bolt12_payment(&nodes[0], &[recipient], payment_context, &invoice);
2663+
expect_recent_payment!(&nodes[0], RecentPaymentDetails::Fulfilled, payment_id);
2664+
2665+
assert!(nodes[0].onion_messenger.next_onion_message_for_peer(node_b_id).is_none());
2666+
assert!(nodes[0].onion_messenger.next_onion_message_for_peer(node_c_id).is_none());
2667+
}
26872668
}

0 commit comments

Comments
 (0)