Skip to content

Commit a812ed2

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 e94dd19 commit a812ed2

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
@@ -565,8 +565,9 @@ mod tests {
565565
let payment_preimage = PaymentPreimage([1; 32]);
566566
let invoice = invoice(payment_preimage);
567567
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
568+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
568569

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

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

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

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

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

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

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

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

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

@@ -824,7 +831,7 @@ mod tests {
824831

825832
let payer = TestPayer::new()
826833
.fails_on_attempt(2)
827-
.expect_value_msat(final_value_msat);
834+
.expect_send(Amount::ForInvoice(final_value_msat));
828835
let router = TestRouter {};
829836
let scorer = RefCell::new(TestScorer::new());
830837
let logger = TestLogger::new();
@@ -854,15 +861,17 @@ mod tests {
854861
let event_handled = core::cell::RefCell::new(false);
855862
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
856863

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

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

@@ -971,7 +980,7 @@ mod tests {
971980
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
972981
let final_value_msat = 100;
973982

974-
let payer = TestPayer::new().expect_value_msat(final_value_msat);
983+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
975984
let router = TestRouter {};
976985
let scorer = RefCell::new(TestScorer::new());
977986
let logger = TestLogger::new();
@@ -1024,7 +1033,7 @@ mod tests {
10241033

10251034
let payer = TestPayer::new()
10261035
.expect_send(Amount::Spontaneous(final_value_msat))
1027-
.expect_send(Amount::ForInvoiceOrRetry(final_value_msat));
1036+
.expect_send(Amount::OnRetry(final_value_msat));
10281037
let router = TestRouter {};
10291038
let scorer = RefCell::new(TestScorer::new());
10301039
let logger = TestLogger::new();
@@ -1215,8 +1224,9 @@ mod tests {
12151224

12161225
#[derive(Clone, Debug, PartialEq, Eq)]
12171226
enum Amount {
1218-
ForInvoiceOrRetry(u64),
1227+
ForInvoice(u64),
12191228
Spontaneous(u64),
1229+
OnRetry(u64),
12201230
}
12211231

12221232
impl TestPayer {
@@ -1228,11 +1238,6 @@ mod tests {
12281238
}
12291239
}
12301240

1231-
fn expect_value_msat(self, value_msat: u64) -> Self {
1232-
self.expectations.borrow_mut().push_back(Amount::ForInvoiceOrRetry(value_msat));
1233-
self
1234-
}
1235-
12361241
fn expect_send(self, value_msat: Amount) -> Self {
12371242
self.expectations.borrow_mut().push_back(value_msat);
12381243
self
@@ -1293,7 +1298,7 @@ mod tests {
12931298
_payment_secret: &Option<PaymentSecret>
12941299
) -> Result<PaymentId, PaymentSendFailure> {
12951300
if self.check_attempts() {
1296-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1301+
self.check_value_msats(Amount::ForInvoice(route.get_total_amount()));
12971302
Ok(PaymentId([1; 32]))
12981303
} else {
12991304
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))
@@ -1317,7 +1322,7 @@ mod tests {
13171322
&self, route: &Route, _payment_id: PaymentId
13181323
) -> Result<(), PaymentSendFailure> {
13191324
if self.check_attempts() {
1320-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1325+
self.check_value_msats(Amount::OnRetry(route.get_total_amount()));
13211326
Ok(())
13221327
} else {
13231328
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))

0 commit comments

Comments
 (0)