Skip to content

Commit fa7226e

Browse files
committed
Add parsing tests for experimental offer TLVs
1 parent 670ee91 commit fa7226e

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

lightning/src/offers/offer.rs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1234,7 +1234,7 @@ impl core::fmt::Display for Offer {
12341234

12351235
#[cfg(test)]
12361236
mod tests {
1237-
use super::{Amount, ExperimentalOfferTlvStreamRef, OFFER_TYPES, Offer, OfferTlvStreamRef, Quantity};
1237+
use super::{Amount, EXPERIMENTAL_OFFER_TYPES, ExperimentalOfferTlvStreamRef, OFFER_TYPES, Offer, OfferTlvStreamRef, Quantity};
12381238
#[cfg(not(c_bindings))]
12391239
use {
12401240
super::OfferBuilder,
@@ -1961,6 +1961,34 @@ mod tests {
19611961
}
19621962
}
19631963

1964+
#[test]
1965+
fn parses_offer_with_experimental_tlv_records() {
1966+
let offer = OfferBuilder::new(pubkey(42)).build().unwrap();
1967+
1968+
let mut encoded_offer = Vec::new();
1969+
offer.write(&mut encoded_offer).unwrap();
1970+
BigSize(EXPERIMENTAL_OFFER_TYPES.start + 1).write(&mut encoded_offer).unwrap();
1971+
BigSize(32).write(&mut encoded_offer).unwrap();
1972+
[42u8; 32].write(&mut encoded_offer).unwrap();
1973+
1974+
if let Err(e) = Offer::try_from(encoded_offer) {
1975+
panic!("error parsing offer: {:?}", e);
1976+
}
1977+
1978+
let offer = OfferBuilder::new(pubkey(42)).build().unwrap();
1979+
1980+
let mut encoded_offer = Vec::new();
1981+
offer.write(&mut encoded_offer).unwrap();
1982+
BigSize(EXPERIMENTAL_OFFER_TYPES.start).write(&mut encoded_offer).unwrap();
1983+
BigSize(32).write(&mut encoded_offer).unwrap();
1984+
[42u8; 32].write(&mut encoded_offer).unwrap();
1985+
1986+
match Offer::try_from(encoded_offer) {
1987+
Ok(_) => panic!("expected error"),
1988+
Err(e) => assert_eq!(e, Bolt12ParseError::Decode(DecodeError::UnknownRequiredFeature)),
1989+
}
1990+
}
1991+
19641992
#[test]
19651993
fn fails_parsing_offer_with_out_of_range_tlv_records() {
19661994
let offer = OfferBuilder::new(pubkey(42)).build().unwrap();
@@ -1975,6 +2003,19 @@ mod tests {
19752003
Ok(_) => panic!("expected error"),
19762004
Err(e) => assert_eq!(e, Bolt12ParseError::Decode(DecodeError::InvalidValue)),
19772005
}
2006+
2007+
let offer = OfferBuilder::new(pubkey(42)).build().unwrap();
2008+
2009+
let mut encoded_offer = Vec::new();
2010+
offer.write(&mut encoded_offer).unwrap();
2011+
BigSize(EXPERIMENTAL_OFFER_TYPES.end).write(&mut encoded_offer).unwrap();
2012+
BigSize(32).write(&mut encoded_offer).unwrap();
2013+
[42u8; 32].write(&mut encoded_offer).unwrap();
2014+
2015+
match Offer::try_from(encoded_offer) {
2016+
Ok(_) => panic!("expected error"),
2017+
Err(e) => assert_eq!(e, Bolt12ParseError::Decode(DecodeError::InvalidValue)),
2018+
}
19782019
}
19792020
}
19802021

0 commit comments

Comments
 (0)