Skip to content

Commit d536463

Browse files
committed
f - copies_verified_invoice_request_fields test
1 parent a2288c0 commit d536463

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

lightning/src/offers/invoice_request.rs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,7 +1180,7 @@ impl Readable for InvoiceRequestFields {
11801180

11811181
#[cfg(test)]
11821182
mod tests {
1183-
use super::{InvoiceRequest, InvoiceRequestTlvStreamRef, SIGNATURE_TAG, UnsignedInvoiceRequest};
1183+
use super::{InvoiceRequest, InvoiceRequestFields, InvoiceRequestTlvStreamRef, SIGNATURE_TAG, UnsignedInvoiceRequest};
11841184

11851185
use bitcoin::blockdata::constants::ChainHash;
11861186
use bitcoin::network::constants::Network;
@@ -1209,7 +1209,7 @@ mod tests {
12091209
use crate::offers::payer::PayerTlvStreamRef;
12101210
use crate::offers::test_utils::*;
12111211
use crate::util::ser::{BigSize, Writeable};
1212-
use crate::util::string::PrintableString;
1212+
use crate::util::string::{PrintableString, UntrustedString};
12131213

12141214
#[test]
12151215
fn builds_invoice_request_with_defaults() {
@@ -2245,4 +2245,48 @@ mod tests {
22452245
Err(e) => assert_eq!(e, Bolt12ParseError::Decode(DecodeError::InvalidValue)),
22462246
}
22472247
}
2248+
2249+
#[test]
2250+
fn copies_verified_invoice_request_fields() {
2251+
let desc = "foo".to_string();
2252+
let node_id = recipient_pubkey();
2253+
let expanded_key = ExpandedKey::new(&KeyMaterial([42; 32]));
2254+
let entropy = FixedEntropy {};
2255+
let secp_ctx = Secp256k1::new();
2256+
2257+
#[cfg(c_bindings)]
2258+
use super::OfferWithDerivedMetadataBuilder as OfferBuilder;
2259+
let offer = OfferBuilder
2260+
::deriving_signing_pubkey(desc, node_id, &expanded_key, &entropy, &secp_ctx)
2261+
.chain(Network::Testnet)
2262+
.amount_msats(1000)
2263+
.supported_quantity(Quantity::Unbounded)
2264+
.build().unwrap();
2265+
assert_eq!(offer.signing_pubkey(), node_id);
2266+
2267+
let invoice_request = offer.request_invoice(vec![1; 32], payer_pubkey()).unwrap()
2268+
.chain(Network::Testnet).unwrap()
2269+
.amount_msats(1001).unwrap()
2270+
.quantity(1).unwrap()
2271+
.payer_note("0".repeat(1024))
2272+
.build().unwrap()
2273+
.sign(payer_sign).unwrap();
2274+
match invoice_request.verify(&expanded_key, &secp_ctx) {
2275+
Ok(invoice_request) => {
2276+
assert_eq!(invoice_request.offer_id, offer.id());
2277+
assert_eq!(
2278+
invoice_request.fields(),
2279+
InvoiceRequestFields {
2280+
payer_id: payer_pubkey(),
2281+
chain: Some(ChainHash::using_genesis_block(Network::Testnet)),
2282+
amount_msats: Some(1001),
2283+
features: InvoiceRequestFeatures::empty(),
2284+
quantity: Some(1),
2285+
payer_note: Some(UntrustedString("0".repeat(512))),
2286+
}
2287+
);
2288+
},
2289+
Err(_) => panic!("unexpected error"),
2290+
}
2291+
}
22482292
}

0 commit comments

Comments
 (0)