Skip to content

Commit 1ba5c16

Browse files
committed
Replace expect_value_msat with expect_send
Modify all InvoicePayer unit tests to use expect_send instead of expect_value_msat, since the former can discern whether the send was for an invoice, spontaneous payment, or a retry. Updates tests to set payer expectations if they weren't already, where it made sense.
1 parent 80afc60 commit 1ba5c16

File tree

1 file changed

+32
-27
lines changed

1 file changed

+32
-27
lines changed

lightning-invoice/src/payment.rs

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -566,8 +566,9 @@ mod tests {
566566
let payment_preimage = PaymentPreimage([1; 32]);
567567
let invoice = invoice(payment_preimage);
568568
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
569+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
569570

570-
let payer = TestPayer::new();
571+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
571572
let router = TestRouter {};
572573
let scorer = RefCell::new(TestScorer::new());
573574
let logger = TestLogger::new();
@@ -595,8 +596,8 @@ mod tests {
595596
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
596597

597598
let payer = TestPayer::new()
598-
.expect_value_msat(final_value_msat)
599-
.expect_value_msat(final_value_msat / 2);
599+
.expect_send(Amount::ForInvoice(final_value_msat))
600+
.expect_send(Amount::OnRetry(final_value_msat / 2));
600601
let router = TestRouter {};
601602
let scorer = RefCell::new(TestScorer::new());
602603
let logger = TestLogger::new();
@@ -637,7 +638,9 @@ mod tests {
637638
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
638639
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
639640

640-
let payer = TestPayer::new();
641+
let payer = TestPayer::new()
642+
.expect_send(Amount::OnRetry(final_value_msat / 2))
643+
.expect_send(Amount::OnRetry(final_value_msat / 2));
641644
let router = TestRouter {};
642645
let scorer = RefCell::new(TestScorer::new());
643646
let logger = TestLogger::new();
@@ -680,9 +683,9 @@ mod tests {
680683
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
681684

682685
let payer = TestPayer::new()
683-
.expect_value_msat(final_value_msat)
684-
.expect_value_msat(final_value_msat / 2)
685-
.expect_value_msat(final_value_msat / 2);
686+
.expect_send(Amount::ForInvoice(final_value_msat))
687+
.expect_send(Amount::OnRetry(final_value_msat / 2))
688+
.expect_send(Amount::OnRetry(final_value_msat / 2));
686689
let router = TestRouter {};
687690
let scorer = RefCell::new(TestScorer::new());
688691
let logger = TestLogger::new();
@@ -732,15 +735,17 @@ mod tests {
732735
let event_handled = core::cell::RefCell::new(false);
733736
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
734737

735-
let payer = TestPayer::new();
738+
let payment_preimage = PaymentPreimage([1; 32]);
739+
let invoice = invoice(payment_preimage);
740+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
741+
742+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
736743
let router = TestRouter {};
737744
let scorer = RefCell::new(TestScorer::new());
738745
let logger = TestLogger::new();
739746
let invoice_payer =
740747
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
741748

742-
let payment_preimage = PaymentPreimage([1; 32]);
743-
let invoice = invoice(payment_preimage);
744749
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
745750
assert_eq!(*payer.attempts.borrow(), 1);
746751

@@ -783,15 +788,17 @@ mod tests {
783788
let event_handled = core::cell::RefCell::new(false);
784789
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
785790

786-
let payer = TestPayer::new();
791+
let payment_preimage = PaymentPreimage([1; 32]);
792+
let invoice = invoice(payment_preimage);
793+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
794+
795+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
787796
let router = TestRouter {};
788797
let scorer = RefCell::new(TestScorer::new());
789798
let logger = TestLogger::new();
790799
let invoice_payer =
791800
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
792801

793-
let payment_preimage = PaymentPreimage([1; 32]);
794-
let invoice = invoice(payment_preimage);
795802
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
796803
assert_eq!(*payer.attempts.borrow(), 1);
797804

@@ -825,7 +832,7 @@ mod tests {
825832

826833
let payer = TestPayer::new()
827834
.fails_on_attempt(2)
828-
.expect_value_msat(final_value_msat);
835+
.expect_send(Amount::ForInvoice(final_value_msat));
829836
let router = TestRouter {};
830837
let scorer = RefCell::new(TestScorer::new());
831838
let logger = TestLogger::new();
@@ -855,15 +862,17 @@ mod tests {
855862
let event_handled = core::cell::RefCell::new(false);
856863
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
857864

858-
let payer = TestPayer::new();
865+
let payment_preimage = PaymentPreimage([1; 32]);
866+
let invoice = invoice(payment_preimage);
867+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
868+
869+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
859870
let router = TestRouter {};
860871
let scorer = RefCell::new(TestScorer::new());
861872
let logger = TestLogger::new();
862873
let invoice_payer =
863874
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
864875

865-
let payment_preimage = PaymentPreimage([1; 32]);
866-
let invoice = invoice(payment_preimage);
867876
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
868877
assert_eq!(*payer.attempts.borrow(), 1);
869878

@@ -972,7 +981,7 @@ mod tests {
972981
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
973982
let final_value_msat = 100;
974983

975-
let payer = TestPayer::new().expect_value_msat(final_value_msat);
984+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
976985
let router = TestRouter {};
977986
let scorer = RefCell::new(TestScorer::new());
978987
let logger = TestLogger::new();
@@ -1026,7 +1035,7 @@ mod tests {
10261035

10271036
let payer = TestPayer::new()
10281037
.expect_send(Amount::Spontaneous(final_value_msat))
1029-
.expect_send(Amount::ForInvoiceOrRetry(final_value_msat));
1038+
.expect_send(Amount::OnRetry(final_value_msat));
10301039
let router = TestRouter {};
10311040
let scorer = RefCell::new(TestScorer::new());
10321041
let logger = TestLogger::new();
@@ -1218,8 +1227,9 @@ mod tests {
12181227

12191228
#[derive(Clone, Debug, PartialEq, Eq)]
12201229
enum Amount {
1221-
ForInvoiceOrRetry(u64),
1230+
ForInvoice(u64),
12221231
Spontaneous(u64),
1232+
OnRetry(u64),
12231233
}
12241234

12251235
impl TestPayer {
@@ -1231,11 +1241,6 @@ mod tests {
12311241
}
12321242
}
12331243

1234-
fn expect_value_msat(self, value_msat: u64) -> Self {
1235-
self.expectations.borrow_mut().push_back(Amount::ForInvoiceOrRetry(value_msat));
1236-
self
1237-
}
1238-
12391244
fn expect_send(self, value_msat: Amount) -> Self {
12401245
self.expectations.borrow_mut().push_back(value_msat);
12411246
self
@@ -1296,7 +1301,7 @@ mod tests {
12961301
_payment_secret: &Option<PaymentSecret>
12971302
) -> Result<PaymentId, PaymentSendFailure> {
12981303
if self.check_attempts() {
1299-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1304+
self.check_value_msats(Amount::ForInvoice(route.get_total_amount()));
13001305
Ok(PaymentId([1; 32]))
13011306
} else {
13021307
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))
@@ -1320,7 +1325,7 @@ mod tests {
13201325
&self, route: &Route, _payment_id: PaymentId
13211326
) -> Result<(), PaymentSendFailure> {
13221327
if self.check_attempts() {
1323-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1328+
self.check_value_msats(Amount::OnRetry(route.get_total_amount()));
13241329
Ok(())
13251330
} else {
13261331
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))

0 commit comments

Comments
 (0)