X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Foffers%2Fparse.rs;h=400cf51a2944d47cc0afd19e227acb3216242959;hb=0456b0e311a4996b00d715f9211adcabc06b37c7;hp=5b4eec841028e4054941c7f65fe64ed02c549a5d;hpb=5fc4abc5cd756ec6e7a0ea4af1abddbb58308d49;p=rust-lightning diff --git a/lightning/src/offers/parse.rs b/lightning/src/offers/parse.rs index 5b4eec84..400cf51a 100644 --- a/lightning/src/offers/parse.rs +++ b/lightning/src/offers/parse.rs @@ -218,10 +218,8 @@ impl From for Bolt12ParseError { } #[cfg(test)] -mod tests { +mod bolt12_tests { use super::Bolt12ParseError; - use bitcoin::bech32; - use crate::ln::msgs::DecodeError; use crate::offers::offer::Offer; #[test] @@ -236,10 +234,16 @@ mod tests { #[test] fn parses_bech32_encoded_offers() { let offers = [ - // BOLT 12 test vectors + // A complete string is valid "lno1pqps7sjqpgtyzm3qv4uxzmtsd3jjqer9wd3hy6tsw35k7msjzfpy7nz5yqcnygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd5xvxg", + + // + can join anywhere "l+no1pqps7sjqpgtyzm3qv4uxzmtsd3jjqer9wd3hy6tsw35k7msjzfpy7nz5yqcnygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd5xvxg", + + // Multiple + can join "lno1pqps7sjqpgt+yzm3qv4uxzmtsd3jjqer9wd3hy6tsw3+5k7msjzfpy7nz5yqcn+ygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd+5xvxg", + + // + can be followed by whitespace "lno1pqps7sjqpgt+ yzm3qv4uxzmtsd3jjqer9wd3hy6tsw3+ 5k7msjzfpy7nz5yqcn+\nygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd+\r\n 5xvxg", ]; for encoded_offer in &offers { @@ -252,7 +256,7 @@ mod tests { #[test] fn fails_parsing_bech32_encoded_offers_with_invalid_continuations() { let offers = [ - // BOLT 12 test vectors + // + must be surrounded by bech32 characters "lno1pqps7sjqpgtyzm3qv4uxzmtsd3jjqer9wd3hy6tsw35k7msjzfpy7nz5yqcnygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd5xvxg+", "lno1pqps7sjqpgtyzm3qv4uxzmtsd3jjqer9wd3hy6tsw35k7msjzfpy7nz5yqcnygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd5xvxg+ ", "+lno1pqps7sjqpgtyzm3qv4uxzmtsd3jjqer9wd3hy6tsw35k7msjzfpy7nz5yqcnygrfdej82um5wf5k2uckyypwa3eyt44h6txtxquqh7lz5djge4afgfjn7k4rgrkuag0jsd5xvxg", @@ -266,6 +270,14 @@ mod tests { } } } +} + +#[cfg(test)] +mod tests { + use super::Bolt12ParseError; + use bitcoin::bech32; + use crate::ln::msgs::DecodeError; + use crate::offers::offer::Offer; #[test] fn fails_parsing_bech32_encoded_offer_with_invalid_hrp() {