Skip to content

Commit 58b49a2

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 5a75b25 commit 58b49a2

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
@@ -579,8 +579,9 @@ mod tests {
579579
let payment_preimage = PaymentPreimage([1; 32]);
580580
let invoice = invoice(payment_preimage);
581581
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
582+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
582583

583-
let payer = TestPayer::new();
584+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
584585
let router = TestRouter {};
585586
let scorer = RefCell::new(TestScorer::new());
586587
let logger = TestLogger::new();
@@ -608,8 +609,8 @@ mod tests {
608609
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
609610

610611
let payer = TestPayer::new()
611-
.expect_value_msat(final_value_msat)
612-
.expect_value_msat(final_value_msat / 2);
612+
.expect_send(Amount::ForInvoice(final_value_msat))
613+
.expect_send(Amount::OnRetry(final_value_msat / 2));
613614
let router = TestRouter {};
614615
let scorer = RefCell::new(TestScorer::new());
615616
let logger = TestLogger::new();
@@ -650,7 +651,9 @@ mod tests {
650651
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
651652
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
652653

653-
let payer = TestPayer::new();
654+
let payer = TestPayer::new()
655+
.expect_send(Amount::OnRetry(final_value_msat / 2))
656+
.expect_send(Amount::OnRetry(final_value_msat / 2));
654657
let router = TestRouter {};
655658
let scorer = RefCell::new(TestScorer::new());
656659
let logger = TestLogger::new();
@@ -693,9 +696,9 @@ mod tests {
693696
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
694697

695698
let payer = TestPayer::new()
696-
.expect_value_msat(final_value_msat)
697-
.expect_value_msat(final_value_msat / 2)
698-
.expect_value_msat(final_value_msat / 2);
699+
.expect_send(Amount::ForInvoice(final_value_msat))
700+
.expect_send(Amount::OnRetry(final_value_msat / 2))
701+
.expect_send(Amount::OnRetry(final_value_msat / 2));
699702
let router = TestRouter {};
700703
let scorer = RefCell::new(TestScorer::new());
701704
let logger = TestLogger::new();
@@ -745,15 +748,17 @@ mod tests {
745748
let event_handled = core::cell::RefCell::new(false);
746749
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
747750

748-
let payer = TestPayer::new();
751+
let payment_preimage = PaymentPreimage([1; 32]);
752+
let invoice = invoice(payment_preimage);
753+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
754+
755+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
749756
let router = TestRouter {};
750757
let scorer = RefCell::new(TestScorer::new());
751758
let logger = TestLogger::new();
752759
let invoice_payer =
753760
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
754761

755-
let payment_preimage = PaymentPreimage([1; 32]);
756-
let invoice = invoice(payment_preimage);
757762
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
758763
assert_eq!(*payer.attempts.borrow(), 1);
759764

@@ -796,15 +801,17 @@ mod tests {
796801
let event_handled = core::cell::RefCell::new(false);
797802
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
798803

799-
let payer = TestPayer::new();
804+
let payment_preimage = PaymentPreimage([1; 32]);
805+
let invoice = invoice(payment_preimage);
806+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
807+
808+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
800809
let router = TestRouter {};
801810
let scorer = RefCell::new(TestScorer::new());
802811
let logger = TestLogger::new();
803812
let invoice_payer =
804813
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
805814

806-
let payment_preimage = PaymentPreimage([1; 32]);
807-
let invoice = invoice(payment_preimage);
808815
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
809816
assert_eq!(*payer.attempts.borrow(), 1);
810817

@@ -838,7 +845,7 @@ mod tests {
838845

839846
let payer = TestPayer::new()
840847
.fails_on_attempt(2)
841-
.expect_value_msat(final_value_msat);
848+
.expect_send(Amount::ForInvoice(final_value_msat));
842849
let router = TestRouter {};
843850
let scorer = RefCell::new(TestScorer::new());
844851
let logger = TestLogger::new();
@@ -868,15 +875,17 @@ mod tests {
868875
let event_handled = core::cell::RefCell::new(false);
869876
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
870877

871-
let payer = TestPayer::new();
878+
let payment_preimage = PaymentPreimage([1; 32]);
879+
let invoice = invoice(payment_preimage);
880+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
881+
882+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
872883
let router = TestRouter {};
873884
let scorer = RefCell::new(TestScorer::new());
874885
let logger = TestLogger::new();
875886
let invoice_payer =
876887
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
877888

878-
let payment_preimage = PaymentPreimage([1; 32]);
879-
let invoice = invoice(payment_preimage);
880889
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
881890
assert_eq!(*payer.attempts.borrow(), 1);
882891

@@ -985,7 +994,7 @@ mod tests {
985994
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
986995
let final_value_msat = 100;
987996

988-
let payer = TestPayer::new().expect_value_msat(final_value_msat);
997+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
989998
let router = TestRouter {};
990999
let scorer = RefCell::new(TestScorer::new());
9911000
let logger = TestLogger::new();
@@ -1038,7 +1047,7 @@ mod tests {
10381047

10391048
let payer = TestPayer::new()
10401049
.expect_send(Amount::Spontaneous(final_value_msat))
1041-
.expect_send(Amount::ForInvoiceOrRetry(final_value_msat));
1050+
.expect_send(Amount::OnRetry(final_value_msat));
10421051
let router = TestRouter {};
10431052
let scorer = RefCell::new(TestScorer::new());
10441053
let logger = TestLogger::new();
@@ -1229,8 +1238,9 @@ mod tests {
12291238

12301239
#[derive(Clone, Debug, PartialEq, Eq)]
12311240
enum Amount {
1232-
ForInvoiceOrRetry(u64),
1241+
ForInvoice(u64),
12331242
Spontaneous(u64),
1243+
OnRetry(u64),
12341244
}
12351245

12361246
impl TestPayer {
@@ -1242,11 +1252,6 @@ mod tests {
12421252
}
12431253
}
12441254

1245-
fn expect_value_msat(self, value_msat: u64) -> Self {
1246-
self.expectations.borrow_mut().push_back(Amount::ForInvoiceOrRetry(value_msat));
1247-
self
1248-
}
1249-
12501255
fn expect_send(self, value_msat: Amount) -> Self {
12511256
self.expectations.borrow_mut().push_back(value_msat);
12521257
self
@@ -1307,7 +1312,7 @@ mod tests {
13071312
_payment_secret: &Option<PaymentSecret>
13081313
) -> Result<PaymentId, PaymentSendFailure> {
13091314
if self.check_attempts() {
1310-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1315+
self.check_value_msats(Amount::ForInvoice(route.get_total_amount()));
13111316
Ok(PaymentId([1; 32]))
13121317
} else {
13131318
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))
@@ -1331,7 +1336,7 @@ mod tests {
13311336
&self, route: &Route, _payment_id: PaymentId
13321337
) -> Result<(), PaymentSendFailure> {
13331338
if self.check_attempts() {
1334-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1339+
self.check_value_msats(Amount::OnRetry(route.get_total_amount()));
13351340
Ok(())
13361341
} else {
13371342
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))

0 commit comments

Comments
 (0)