@@ -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+
488493impl 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