Skip to content

Commit d2e5dbc

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 1a3953a commit d2e5dbc

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
@@ -589,8 +589,9 @@ mod tests {
589589
let payment_preimage = PaymentPreimage([1; 32]);
590590
let invoice = invoice(payment_preimage);
591591
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
592+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
592593

593-
let payer = TestPayer::new();
594+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
594595
let router = TestRouter {};
595596
let scorer = RefCell::new(TestScorer::new());
596597
let logger = TestLogger::new();
@@ -618,8 +619,8 @@ mod tests {
618619
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
619620

620621
let payer = TestPayer::new()
621-
.expect_value_msat(final_value_msat)
622-
.expect_value_msat(final_value_msat / 2);
622+
.expect_send(Amount::ForInvoice(final_value_msat))
623+
.expect_send(Amount::OnRetry(final_value_msat / 2));
623624
let router = TestRouter {};
624625
let scorer = RefCell::new(TestScorer::new());
625626
let logger = TestLogger::new();
@@ -660,7 +661,9 @@ mod tests {
660661
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
661662
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
662663

663-
let payer = TestPayer::new();
664+
let payer = TestPayer::new()
665+
.expect_send(Amount::OnRetry(final_value_msat / 2))
666+
.expect_send(Amount::OnRetry(final_value_msat / 2));
664667
let router = TestRouter {};
665668
let scorer = RefCell::new(TestScorer::new());
666669
let logger = TestLogger::new();
@@ -703,9 +706,9 @@ mod tests {
703706
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
704707

705708
let payer = TestPayer::new()
706-
.expect_value_msat(final_value_msat)
707-
.expect_value_msat(final_value_msat / 2)
708-
.expect_value_msat(final_value_msat / 2);
709+
.expect_send(Amount::ForInvoice(final_value_msat))
710+
.expect_send(Amount::OnRetry(final_value_msat / 2))
711+
.expect_send(Amount::OnRetry(final_value_msat / 2));
709712
let router = TestRouter {};
710713
let scorer = RefCell::new(TestScorer::new());
711714
let logger = TestLogger::new();
@@ -755,15 +758,17 @@ mod tests {
755758
let event_handled = core::cell::RefCell::new(false);
756759
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
757760

758-
let payer = TestPayer::new();
761+
let payment_preimage = PaymentPreimage([1; 32]);
762+
let invoice = invoice(payment_preimage);
763+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
764+
765+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
759766
let router = TestRouter {};
760767
let scorer = RefCell::new(TestScorer::new());
761768
let logger = TestLogger::new();
762769
let invoice_payer =
763770
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
764771

765-
let payment_preimage = PaymentPreimage([1; 32]);
766-
let invoice = invoice(payment_preimage);
767772
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
768773
assert_eq!(*payer.attempts.borrow(), 1);
769774

@@ -806,15 +811,17 @@ mod tests {
806811
let event_handled = core::cell::RefCell::new(false);
807812
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
808813

809-
let payer = TestPayer::new();
814+
let payment_preimage = PaymentPreimage([1; 32]);
815+
let invoice = invoice(payment_preimage);
816+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
817+
818+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
810819
let router = TestRouter {};
811820
let scorer = RefCell::new(TestScorer::new());
812821
let logger = TestLogger::new();
813822
let invoice_payer =
814823
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
815824

816-
let payment_preimage = PaymentPreimage([1; 32]);
817-
let invoice = invoice(payment_preimage);
818825
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
819826
assert_eq!(*payer.attempts.borrow(), 1);
820827

@@ -848,7 +855,7 @@ mod tests {
848855

849856
let payer = TestPayer::new()
850857
.fails_on_attempt(2)
851-
.expect_value_msat(final_value_msat);
858+
.expect_send(Amount::ForInvoice(final_value_msat));
852859
let router = TestRouter {};
853860
let scorer = RefCell::new(TestScorer::new());
854861
let logger = TestLogger::new();
@@ -878,15 +885,17 @@ mod tests {
878885
let event_handled = core::cell::RefCell::new(false);
879886
let event_handler = |_: &_| { *event_handled.borrow_mut() = true; };
880887

881-
let payer = TestPayer::new();
888+
let payment_preimage = PaymentPreimage([1; 32]);
889+
let invoice = invoice(payment_preimage);
890+
let final_value_msat = invoice.amount_milli_satoshis().unwrap();
891+
892+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
882893
let router = TestRouter {};
883894
let scorer = RefCell::new(TestScorer::new());
884895
let logger = TestLogger::new();
885896
let invoice_payer =
886897
InvoicePayer::new(&payer, router, &scorer, &logger, event_handler, RetryAttempts(2));
887898

888-
let payment_preimage = PaymentPreimage([1; 32]);
889-
let invoice = invoice(payment_preimage);
890899
let payment_id = Some(invoice_payer.pay_invoice(&invoice).unwrap());
891900
assert_eq!(*payer.attempts.borrow(), 1);
892901

@@ -995,7 +1004,7 @@ mod tests {
9951004
let payment_hash = PaymentHash(invoice.payment_hash().clone().into_inner());
9961005
let final_value_msat = 100;
9971006

998-
let payer = TestPayer::new().expect_value_msat(final_value_msat);
1007+
let payer = TestPayer::new().expect_send(Amount::ForInvoice(final_value_msat));
9991008
let router = TestRouter {};
10001009
let scorer = RefCell::new(TestScorer::new());
10011010
let logger = TestLogger::new();
@@ -1048,7 +1057,7 @@ mod tests {
10481057

10491058
let payer = TestPayer::new()
10501059
.expect_send(Amount::Spontaneous(final_value_msat))
1051-
.expect_send(Amount::ForInvoiceOrRetry(final_value_msat));
1060+
.expect_send(Amount::OnRetry(final_value_msat));
10521061
let router = TestRouter {};
10531062
let scorer = RefCell::new(TestScorer::new());
10541063
let logger = TestLogger::new();
@@ -1239,8 +1248,9 @@ mod tests {
12391248

12401249
#[derive(Clone, Debug, PartialEq, Eq)]
12411250
enum Amount {
1242-
ForInvoiceOrRetry(u64),
1251+
ForInvoice(u64),
12431252
Spontaneous(u64),
1253+
OnRetry(u64),
12441254
}
12451255

12461256
impl TestPayer {
@@ -1252,11 +1262,6 @@ mod tests {
12521262
}
12531263
}
12541264

1255-
fn expect_value_msat(self, value_msat: u64) -> Self {
1256-
self.expectations.borrow_mut().push_back(Amount::ForInvoiceOrRetry(value_msat));
1257-
self
1258-
}
1259-
12601265
fn expect_send(self, value_msat: Amount) -> Self {
12611266
self.expectations.borrow_mut().push_back(value_msat);
12621267
self
@@ -1317,7 +1322,7 @@ mod tests {
13171322
_payment_secret: &Option<PaymentSecret>
13181323
) -> Result<PaymentId, PaymentSendFailure> {
13191324
if self.check_attempts() {
1320-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1325+
self.check_value_msats(Amount::ForInvoice(route.get_total_amount()));
13211326
Ok(PaymentId([1; 32]))
13221327
} else {
13231328
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))
@@ -1341,7 +1346,7 @@ mod tests {
13411346
&self, route: &Route, _payment_id: PaymentId
13421347
) -> Result<(), PaymentSendFailure> {
13431348
if self.check_attempts() {
1344-
self.check_value_msats(Amount::ForInvoiceOrRetry(route.get_total_amount()));
1349+
self.check_value_msats(Amount::OnRetry(route.get_total_amount()));
13451350
Ok(())
13461351
} else {
13471352
Err(PaymentSendFailure::ParameterError(APIError::MonitorUpdateFailed))

0 commit comments

Comments
 (0)