Skip to content

Commit bde9823

Browse files
committed
Expose Offer accessor functions in InvoiceRequest
Also, expose both Offer and InvoiceRequest functions in UnsignedInvoiceRequest.
1 parent 9d02d06 commit bde9823

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

lightning/src/offers/invoice_request.rs

+36-1
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,13 @@ macro_rules! invoice_request_accessors { ($self: ident, $contents: expr) => {
485485
}
486486
} }
487487

488+
impl UnsignedInvoiceRequest {
489+
offer_accessors!(self, self.contents.inner.offer);
490+
invoice_request_accessors!(self, self.contents);
491+
}
492+
488493
impl InvoiceRequest {
494+
offer_accessors!(self, self.contents.inner.offer);
489495
invoice_request_accessors!(self, self.contents);
490496

491497
/// Signature of the invoice request using [`payer_id`].
@@ -854,7 +860,7 @@ mod tests {
854860
#[cfg(feature = "std")]
855861
use core::time::Duration;
856862
use crate::sign::KeyMaterial;
857-
use crate::ln::features::InvoiceRequestFeatures;
863+
use crate::ln::features::{InvoiceRequestFeatures, OfferFeatures};
858864
use crate::ln::inbound_payment::ExpandedKey;
859865
use crate::ln::msgs::{DecodeError, MAX_VALUE_MSAT};
860866
use crate::offers::invoice::{Bolt12Invoice, SIGNATURE_TAG as INVOICE_SIGNATURE_TAG};
@@ -877,6 +883,25 @@ mod tests {
877883
let mut buffer = Vec::new();
878884
unsigned_invoice_request.write(&mut buffer).unwrap();
879885

886+
assert_eq!(unsigned_invoice_request.bytes, buffer.as_slice());
887+
assert_eq!(unsigned_invoice_request.payer_metadata(), &[1; 32]);
888+
assert_eq!(unsigned_invoice_request.chains(), vec![ChainHash::using_genesis_block(Network::Bitcoin)]);
889+
assert_eq!(unsigned_invoice_request.metadata(), None);
890+
assert_eq!(unsigned_invoice_request.amount(), Some(&Amount::Bitcoin { amount_msats: 1000 }));
891+
assert_eq!(unsigned_invoice_request.description(), PrintableString("foo"));
892+
assert_eq!(unsigned_invoice_request.offer_features(), &OfferFeatures::empty());
893+
assert_eq!(unsigned_invoice_request.absolute_expiry(), None);
894+
assert_eq!(unsigned_invoice_request.paths(), &[]);
895+
assert_eq!(unsigned_invoice_request.issuer(), None);
896+
assert_eq!(unsigned_invoice_request.supported_quantity(), Quantity::One);
897+
assert_eq!(unsigned_invoice_request.signing_pubkey(), recipient_pubkey());
898+
assert_eq!(unsigned_invoice_request.chain(), ChainHash::using_genesis_block(Network::Bitcoin));
899+
assert_eq!(unsigned_invoice_request.amount_msats(), None);
900+
assert_eq!(unsigned_invoice_request.invoice_request_features(), &InvoiceRequestFeatures::empty());
901+
assert_eq!(unsigned_invoice_request.quantity(), None);
902+
assert_eq!(unsigned_invoice_request.payer_id(), payer_pubkey());
903+
assert_eq!(unsigned_invoice_request.payer_note(), None);
904+
880905
match UnsignedInvoiceRequest::try_from(buffer) {
881906
Err(e) => panic!("error parsing unsigned invoice request: {:?}", e),
882907
Ok(parsed) => {
@@ -892,6 +917,16 @@ mod tests {
892917

893918
assert_eq!(invoice_request.bytes, buffer.as_slice());
894919
assert_eq!(invoice_request.payer_metadata(), &[1; 32]);
920+
assert_eq!(invoice_request.chains(), vec![ChainHash::using_genesis_block(Network::Bitcoin)]);
921+
assert_eq!(invoice_request.metadata(), None);
922+
assert_eq!(invoice_request.amount(), Some(&Amount::Bitcoin { amount_msats: 1000 }));
923+
assert_eq!(invoice_request.description(), PrintableString("foo"));
924+
assert_eq!(invoice_request.offer_features(), &OfferFeatures::empty());
925+
assert_eq!(invoice_request.absolute_expiry(), None);
926+
assert_eq!(invoice_request.paths(), &[]);
927+
assert_eq!(invoice_request.issuer(), None);
928+
assert_eq!(invoice_request.supported_quantity(), Quantity::One);
929+
assert_eq!(invoice_request.signing_pubkey(), recipient_pubkey());
895930
assert_eq!(invoice_request.chain(), ChainHash::using_genesis_block(Network::Bitcoin));
896931
assert_eq!(invoice_request.amount_msats(), None);
897932
assert_eq!(invoice_request.invoice_request_features(), &InvoiceRequestFeatures::empty());

0 commit comments

Comments
 (0)