Skip to content

Commit 558d15f

Browse files
committed
Expose Offer accessor functions in InvoiceRequest
Also, expose both Offer and InvoiceRequest functions in UnsignedInvoiceRequest.
1 parent 76ee075 commit 558d15f

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

lightning/src/offers/invoice_request.rs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,13 @@ macro_rules! invoice_request_accessors { ($self: ident, $contents: expr) => {
479479
}
480480
} }
481481

482+
impl UnsignedInvoiceRequest {
483+
offer_accessors!(self, self.contents.inner.offer);
484+
invoice_request_accessors!(self, self.contents);
485+
}
486+
482487
impl InvoiceRequest {
488+
offer_accessors!(self, self.contents.inner.offer);
483489
invoice_request_accessors!(self, self.contents);
484490

485491
/// Signature of the invoice request using [`payer_id`].
@@ -848,7 +854,7 @@ mod tests {
848854
#[cfg(feature = "std")]
849855
use core::time::Duration;
850856
use crate::sign::KeyMaterial;
851-
use crate::ln::features::InvoiceRequestFeatures;
857+
use crate::ln::features::{InvoiceRequestFeatures, OfferFeatures};
852858
use crate::ln::inbound_payment::ExpandedKey;
853859
use crate::ln::msgs::{DecodeError, MAX_VALUE_MSAT};
854860
use crate::offers::invoice::{Bolt12Invoice, SIGNATURE_TAG as INVOICE_SIGNATURE_TAG};
@@ -871,6 +877,25 @@ mod tests {
871877
let mut buffer = Vec::new();
872878
unsigned_invoice_request.write(&mut buffer).unwrap();
873879

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

887912
assert_eq!(invoice_request.bytes, buffer.as_slice());
888913
assert_eq!(invoice_request.payer_metadata(), &[1; 32]);
914+
assert_eq!(invoice_request.chains(), vec![ChainHash::using_genesis_block(Network::Bitcoin)]);
915+
assert_eq!(invoice_request.metadata(), None);
916+
assert_eq!(invoice_request.amount(), Some(&Amount::Bitcoin { amount_msats: 1000 }));
917+
assert_eq!(invoice_request.description(), PrintableString("foo"));
918+
assert_eq!(invoice_request.offer_features(), &OfferFeatures::empty());
919+
assert_eq!(invoice_request.absolute_expiry(), None);
920+
assert_eq!(invoice_request.paths(), &[]);
921+
assert_eq!(invoice_request.issuer(), None);
922+
assert_eq!(invoice_request.supported_quantity(), Quantity::One);
923+
assert_eq!(invoice_request.signing_pubkey(), recipient_pubkey());
889924
assert_eq!(invoice_request.chain(), ChainHash::using_genesis_block(Network::Bitcoin));
890925
assert_eq!(invoice_request.amount_msats(), None);
891926
assert_eq!(invoice_request.invoice_request_features(), &InvoiceRequestFeatures::empty());

0 commit comments

Comments
 (0)