X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Foffers%2Fparse.rs;h=72c4c380d52592f8c87b59c9f50653a449fec0b9;hb=ec956516d1db59d5e667cf3ebec2dc2e08148cdd;hp=5b4eec841028e4054941c7f65fe64ed02c549a5d;hpb=5fc4abc5cd756ec6e7a0ea4af1abddbb58308d49;p=rust-lightning diff --git a/lightning/src/offers/parse.rs b/lightning/src/offers/parse.rs index 5b4eec84..72c4c380 100644 --- a/lightning/src/offers/parse.rs +++ b/lightning/src/offers/parse.rs @@ -11,11 +11,11 @@ use bitcoin::bech32; use bitcoin::secp256k1; -use core::convert::TryFrom; use crate::io; use crate::ln::msgs::DecodeError; use crate::util::ser::SeekReadable; +#[allow(unused_imports)] use crate::prelude::*; #[cfg(not(fuzzing))] @@ -27,10 +27,10 @@ pub use sealed::Bech32Encode; mod sealed { use bitcoin::bech32; use bitcoin::bech32::{FromBase32, ToBase32}; - use core::convert::TryFrom; use core::fmt; use super::Bolt12ParseError; + #[allow(unused_imports)] use crate::prelude::*; /// Indicates a message can be encoded using bech32. @@ -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() {