diff --git a/lib/dubp/user-docs/src/documents/certification.rs b/lib/dubp/user-docs/src/documents/certification.rs index d4b0e4fec508c4a9f92ec6802aa4d6dd84f548e5..407b8a75aa3330903c64292c437f2136c767d901 100644 --- a/lib/dubp/user-docs/src/documents/certification.rs +++ b/lib/dubp/user-docs/src/documents/certification.rs @@ -94,20 +94,19 @@ impl TextDocumentParser<Rule> for CertificationDocumentParser { fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> { match DocumentsParser::parse(Rule::cert, doc) { Ok(mut cert_pairs) => { - let cert_pair = cert_pairs.next().unwrap(); // get and unwrap the `cert` rule; never fails + let cert_pair = unwrap!(cert_pairs.next()); // get and unwrap the `cert` rule; never fails Self::from_pest_pair(cert_pair) } Err(pest_error) => fatal_error!("{}", pest_error), //Err(TextDocumentParseError::PestError()), } } fn from_pest_pair(cert_pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let cert_vx_pair = cert_pair.into_inner().next().unwrap(); // get and unwrap the `cert_vX` rule; never fails + let cert_vx_pair = unwrap!(cert_pair.into_inner().next()); // get and unwrap the `cert_vX` rule; never fails match cert_vx_pair.as_rule() { - Rule::cert_v10 => Ok(CertificationDocumentParser::from_versioned_pest_pair( - 10, - cert_vx_pair, - )?), + Rule::cert_v10 => { + CertificationDocumentParser::from_versioned_pest_pair(10, cert_vx_pair) + } _ => Err(TextDocumentParseError::UnexpectedVersion(format!( "{:#?}", cert_vx_pair.as_rule() diff --git a/lib/dubp/user-docs/src/documents/certification/v10.rs b/lib/dubp/user-docs/src/documents/certification/v10.rs index 52a36ade4a79312c484ada09b8fd6e313b9ea9d1..c0dbf79a6486a319cd643742494b942d354eda56 100644 --- a/lib/dubp/user-docs/src/documents/certification/v10.rs +++ b/lib/dubp/user-docs/src/documents/certification/v10.rs @@ -171,7 +171,7 @@ impl CertificationDocumentV10 { match field.as_rule() { Rule::currency => currency = field.as_str(), Rule::pubkey => pubkeys.push(PubKey::Ed25519( - ed25519::PublicKey::from_base58(field.as_str()).unwrap(), // Grammar ensures that we have a base58 string. + unwrap!(ed25519::PublicKey::from_base58(field.as_str())), // Grammar ensures that we have a base58 string. )), Rule::uid => { uid = field.as_str(); @@ -179,16 +179,16 @@ impl CertificationDocumentV10 { Rule::blockstamp => { let mut inner_rules = field.into_inner(); // { integer ~ "-" ~ hash } - let block_id: &str = inner_rules.next().unwrap().as_str(); - let block_hash: &str = inner_rules.next().unwrap().as_str(); + let block_id: &str = unwrap!(inner_rules.next()).as_str(); + let block_hash: &str = unwrap!(inner_rules.next()).as_str(); blockstamps.push(Blockstamp { - id: BlockNumber(block_id.parse().unwrap()), // Grammar ensures that we have a digits string. - hash: BlockHash(Hash::from_hex(block_hash).unwrap()), // Grammar ensures that we have an hexadecimal string. + id: BlockNumber(unwrap!(block_id.parse())), // Grammar ensures that we have a digits string. + hash: BlockHash(unwrap!(Hash::from_hex(block_hash))), // Grammar ensures that we have an hexadecimal string. }); } Rule::ed25519_sig => { sigs.push(Sig::Ed25519( - ed25519::Signature::from_base64(field.as_str()).unwrap(), // Grammar ensures that we have a base64 string. + unwrap!(ed25519::Signature::from_base64(field.as_str())), // Grammar ensures that we have a base64 string. )); } Rule::EOI => (), @@ -339,34 +339,41 @@ mod tests { #[test] fn generate_real_certification_document() { - let seed = Seed32::from_base58("4tNQ7d9pj2Da5wUVoW9mFn7JjuPoowF977au8DdhEjVR").unwrap(); + let seed = unwrap!( + Seed32::from_base58("4tNQ7d9pj2Da5wUVoW9mFn7JjuPoowF977au8DdhEjVR"), + "fail to build Seed32" + ); let keypair = ed25519::KeyPairFromSeed32Generator::generate(seed); let pubkey = PubKey::Ed25519(keypair.public_key()); let signator = SignatorEnum::Ed25519(keypair.generate_signator().expect("fail to gen signator")); - let sig = Sig::Ed25519(ed25519::Signature::from_base64( + let sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "sYbaZp3pP9F/CveT1LPiJXECTBHlNurDXqmBo71N7JX/rvmHw6m/sid9bGdIa8cUq+vDD4DMB/F7r7As1p4rAg==", - ).unwrap()); - - let target = PubKey::Ed25519( - ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV") - .unwrap(), + ), "Fail to build Signature")); + + let target = PubKey::Ed25519(unwrap!( + ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "Fail to build PublicKey" + )); + + let identity_blockstamp = unwrap!( + Blockstamp::from_string( + "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + ), + "Fail to build Blockstamp" ); - let identity_blockstamp = Blockstamp::from_string( - "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", - ) - .unwrap(); - - let identity_sig = Sig::Ed25519(ed25519::Signature::from_base64( + let identity_sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==", - ).unwrap()); + ), "Fail to build Signature")); - let blockstamp = Blockstamp::from_string( - "36-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B865", - ) - .unwrap(); + let blockstamp = unwrap!( + Blockstamp::from_string( + "36-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B865", + ), + "Fail to build Blockstamp" + ); let builder = CertificationDocumentV10Builder { currency: "duniter_unit_test_currency", @@ -411,7 +418,8 @@ IdtySignature: SmSweUD4lEMwiZfY8ux9maBjrQQDkC85oMNsin6oSQCPdXG8sFCZ4FisUaWqKsfOl CertTimestamp: 167884-0001DFCA28002A8C96575E53B8CEF8317453A7B0BA255542CCF0EC8AB5E99038 wqZxPEGxLrHGv8VdEIfUGvUcf+tDdNTMXjLzVRCQ4UhlhDRahOMjfcbP7byNYr5OfIl83S1MBxF7VJgu8YasCA=="; - let doc = CertificationDocumentParser::parse(doc).unwrap(); + let doc = CertificationDocumentParser::parse(doc) + .expect("fail to parse test certification document !"); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); /*assert_eq!( diff --git a/lib/dubp/user-docs/src/documents/identity.rs b/lib/dubp/user-docs/src/documents/identity.rs index 1056cec5219dced342929a28ca15ce07408f95d0..74ec431b0647365e764af47a06be3b3c79759b54 100644 --- a/lib/dubp/user-docs/src/documents/identity.rs +++ b/lib/dubp/user-docs/src/documents/identity.rs @@ -87,15 +87,15 @@ impl TextDocumentParser<Rule> for IdentityDocumentParser { fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> { let mut doc_pairs = DocumentsParser::parse(Rule::idty, doc)?; - let idty_pair = doc_pairs.next().unwrap(); // get and unwrap the `idty` rule; never fails + let idty_pair = unwrap!(doc_pairs.next()); // get and unwrap the `idty` rule; never fails Self::from_pest_pair(idty_pair) } #[inline] fn from_pest_pair(pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let idty_vx_pair = pair.into_inner().next().unwrap(); // get and unwrap the `idty_vx` rule; never fails + let idty_vx_pair = unwrap!(pair.into_inner().next()); // get and unwrap the `idty_vx` rule; never fails match idty_vx_pair.as_rule() { - Rule::idty_v10 => Ok(Self::from_versioned_pest_pair(10, idty_vx_pair)?), + Rule::idty_v10 => Self::from_versioned_pest_pair(10, idty_vx_pair), _ => Err(TextDocumentParseError::UnexpectedVersion(format!( "{:#?}", idty_vx_pair.as_rule() diff --git a/lib/dubp/user-docs/src/documents/identity/v10.rs b/lib/dubp/user-docs/src/documents/identity/v10.rs index e5ffd676777b2fbae23db99f7d253478f8188c14..24fa6f258a7df35fa4f13ff130278934f1afe5c3 100644 --- a/lib/dubp/user-docs/src/documents/identity/v10.rs +++ b/lib/dubp/user-docs/src/documents/identity/v10.rs @@ -104,11 +104,11 @@ impl IdentityDocumentV10 { Rule::blockstamp => { let mut inner_rules = field.into_inner(); // { integer ~ "-" ~ hash } - let block_id: &str = inner_rules.next().unwrap().as_str(); - let block_hash: &str = inner_rules.next().unwrap().as_str(); + let block_id: &str = unwrap!(inner_rules.next()).as_str(); + let block_hash: &str = unwrap!(inner_rules.next()).as_str(); blockstamp = Blockstamp { - id: BlockNumber(block_id.parse().unwrap()), // Grammar ensures that we have a digits string. - hash: BlockHash(Hash::from_hex(block_hash).unwrap()), // Grammar ensures that we have an hexadecimal string. + id: BlockNumber(unwrap!(block_id.parse())), // Grammar ensures that we have a digits string. + hash: BlockHash(unwrap!(Hash::from_hex(block_hash))), // Grammar ensures that we have an hexadecimal string. }; } Rule::ed25519_sig => sig_str = field.as_str(), @@ -122,12 +122,12 @@ impl IdentityDocumentV10 { currency: currency.to_owned(), username: uid.to_owned(), blockstamp, - issuers: vec![PubKey::Ed25519( - ed25519::PublicKey::from_base58(pubkey_str).unwrap(), - )], // Grammar ensures that we have a base58 string. - signatures: vec![Sig::Ed25519( - ed25519::Signature::from_base64(sig_str).unwrap(), - )], // Grammar ensures that we have a base64 string. + issuers: vec![PubKey::Ed25519(unwrap!(ed25519::PublicKey::from_base58( + pubkey_str + )))], // Grammar ensures that we have a base58 string. + signatures: vec![Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( + sig_str + )))], // Grammar ensures that we have a base64 string. }) } } @@ -272,24 +272,27 @@ mod tests { #[test] fn generate_real_document() { - let keypair = ed25519::KeyPairFromSeed32Generator::generate( - Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV").unwrap(), - ); + let keypair = ed25519::KeyPairFromSeed32Generator::generate(unwrap!( + Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "fail to build Seed32" + )); let pubkey = PubKey::Ed25519(keypair.public_key()); let signator = SignatorEnum::Ed25519(keypair.generate_signator().expect("fail to gen signator")); let sig = Sig::Ed25519( - ed25519::Signature::from_base64( + unwrap!(ed25519::Signature::from_base64( "mmFepRsiOjILKnCvEvN3IZScLOfg8+e0JPAl5VkiuTLZRGJKgKhPy8nQlCKbeg0jefQm/2HJ78e/Sj+NMqYLCw==", ) - .unwrap(), + , "fail to build Signature"), ); - let block = Blockstamp::from_string( - "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", - ) - .unwrap(); + let block = unwrap!( + Blockstamp::from_string( + "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + ), + "fail to build Blockstamp" + ); let builder = IdentityDocumentV10Builder { currency: "duniter_unit_test_currency", diff --git a/lib/dubp/user-docs/src/documents/membership.rs b/lib/dubp/user-docs/src/documents/membership.rs index c011b90a611de1cea51b719c48ee05ac2b57ad03..51b5f2dc9abf22698f4e15af85efceceb1f0ec32 100644 --- a/lib/dubp/user-docs/src/documents/membership.rs +++ b/lib/dubp/user-docs/src/documents/membership.rs @@ -115,15 +115,18 @@ impl TextDocumentParser<Rule> for MembershipDocumentParser { fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> { let mut ms_pairs = DocumentsParser::parse(Rule::membership, doc)?; - let ms_pair = ms_pairs.next().unwrap(); // get and unwrap the `membership` rule; never fails + let ms_pair = unwrap!(ms_pairs.next(), "Fail to parse Rule::membership"); // get and unwrap the `membership` rule; never fails Self::from_pest_pair(ms_pair) } #[inline] fn from_pest_pair(pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let ms_vx_pair = pair.into_inner().next().unwrap(); // get and unwrap the `membership_vX` rule; never fails + let ms_vx_pair = unwrap!( + pair.into_inner().next(), + "Fail to parse Rule::membership_vX" + ); // get and unwrap the `membership_vX` rule; never fails match ms_vx_pair.as_rule() { - Rule::membership_v10 => Ok(Self::from_versioned_pest_pair(10, ms_vx_pair)?), + Rule::membership_v10 => Self::from_versioned_pest_pair(10, ms_vx_pair), _ => Err(TextDocumentParseError::UnexpectedVersion(format!( "{:#?}", ms_vx_pair.as_rule() diff --git a/lib/dubp/user-docs/src/documents/membership/v10.rs b/lib/dubp/user-docs/src/documents/membership/v10.rs index 4599a568d5f7a3855e95a06cea8bea820a1ae8f2..ab20cf58a53f2947486f022a4714852fcb9ed477 100644 --- a/lib/dubp/user-docs/src/documents/membership/v10.rs +++ b/lib/dubp/user-docs/src/documents/membership/v10.rs @@ -161,11 +161,11 @@ impl MembershipDocumentV10 { Rule::blockstamp => { let mut inner_rules = field.into_inner(); // { integer ~ "-" ~ hash } - let block_id: &str = inner_rules.next().unwrap().as_str(); - let block_hash: &str = inner_rules.next().unwrap().as_str(); + let block_id: &str = unwrap!(inner_rules.next()).as_str(); + let block_hash: &str = unwrap!(inner_rules.next()).as_str(); blockstamps.push(Blockstamp { - id: BlockNumber(block_id.parse().unwrap()), // Grammar ensures that we have a digits string. - hash: BlockHash(Hash::from_hex(block_hash).unwrap()), // Grammar ensures that we have an hexadecimal string. + id: BlockNumber(unwrap!(block_id.parse())), // Grammar ensures that we have a digits string. + hash: BlockHash(unwrap!(Hash::from_hex(block_hash))), // Grammar ensures that we have an hexadecimal string. }); } Rule::ed25519_sig => sig_str = field.as_str(), @@ -176,17 +176,17 @@ impl MembershipDocumentV10 { Ok(MembershipDocumentV10 { text: Some(doc.to_owned()), - issuers: vec![PubKey::Ed25519( - ed25519::PublicKey::from_base58(pubkey_str).unwrap(), - )], // Grammar ensures that we have a base58 string. + issuers: vec![PubKey::Ed25519(unwrap!(ed25519::PublicKey::from_base58( + pubkey_str + )))], // Grammar ensures that we have a base58 string. currency: currency.to_owned(), blockstamp: blockstamps[0], membership, identity_username: uid.to_owned(), identity_blockstamp: blockstamps[1], - signatures: vec![Sig::Ed25519( - ed25519::Signature::from_base64(sig_str).unwrap(), - )], // Grammar ensures that we have a base64 string. + signatures: vec![Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( + sig_str + )))], // Grammar ensures that we have a base64 string. }) } } @@ -335,24 +335,27 @@ mod tests { #[test] fn generate_real_document() { - let keypair = ed25519::KeyPairFromSeed32Generator::generate( - Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV").unwrap(), - ); + let keypair = ed25519::KeyPairFromSeed32Generator::generate(unwrap!( + Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "fail to build Seed32" + )); let pubkey = PubKey::Ed25519(keypair.public_key()); let signator = SignatorEnum::Ed25519(keypair.generate_signator().expect("fail to gen signator")); let sig = Sig::Ed25519( - ed25519::Signature::from_base64( + unwrap!(ed25519::Signature::from_base64( "cUgoc8AI+Tae/AZmRfTnW+xq3XFtmYoUi2LXlmXr8/7LaXiUccQb8+Ds1nZoBp/8+t031HMwqAUpVIqww2FGCg==", ) - .unwrap(), + , "fail to build Signature"), ); - let block = Blockstamp::from_string( - "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", - ) - .unwrap(); + let block = unwrap!( + Blockstamp::from_string( + "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + ), + "fail to build Blockstamp" + ); let builder = MembershipDocumentV10Builder { currency: "duniter_unit_test_currency", @@ -394,7 +397,8 @@ UserID: tic CertTS: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 s2hUbokkibTAWGEwErw6hyXSWlWFQ2UWs2PWx8d/kkElAyuuWaQq4Tsonuweh1xn4AC1TVWt4yMR3WrDdkhnAw=="; - let doc = MembershipDocumentParser::parse(doc).unwrap(); + let doc = + MembershipDocumentParser::parse(doc).expect("fail to parse test membership document !"); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); assert_eq!( diff --git a/lib/dubp/user-docs/src/documents/mod.rs b/lib/dubp/user-docs/src/documents/mod.rs index 8497715da6d52cb77062d6fc6908816aca1eee77..dca2bb7a89006dba91b64e01249563819c67f80e 100644 --- a/lib/dubp/user-docs/src/documents/mod.rs +++ b/lib/dubp/user-docs/src/documents/mod.rs @@ -25,6 +25,7 @@ use dubp_common_doc::traits::ToStringObject; use durs_common_tools::fatal_error; use pest::iterators::Pair; use pest::Parser; +use unwrap::unwrap; pub mod certification; pub mod identity; @@ -99,16 +100,16 @@ impl TextDocumentParser<Rule> for UserDocumentDUBP { fn parse(doc: &str) -> Result<UserDocumentDUBP, TextDocumentParseError> { match DocumentsParser::parse(Rule::document, doc) { - Ok(mut doc_pairs) => Ok(UserDocumentDUBP::from_pest_pair(doc_pairs.next().unwrap())?), // get and unwrap the `document` rule; never fails + Ok(mut doc_pairs) => UserDocumentDUBP::from_pest_pair(unwrap!(doc_pairs.next())), // get and unwrap the `document` rule; never fails Err(pest_error) => Err(pest_error.into()), } } #[inline] fn from_pest_pair(pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let doc_vx_pair = pair.into_inner().next().unwrap(); // get and unwrap the `document_vX` rule; never fails + let doc_vx_pair = unwrap!(pair.into_inner().next()); // get and unwrap the `document_vX` rule; never fails match doc_vx_pair.as_rule() { - Rule::document_v10 => Ok(UserDocumentDUBP::from_versioned_pest_pair(10, doc_vx_pair)?), + Rule::document_v10 => UserDocumentDUBP::from_versioned_pest_pair(10, doc_vx_pair), _ => fatal_error!("unexpected rule: {:?}", doc_vx_pair.as_rule()), // Grammar ensures that we never reach this line } } @@ -131,7 +132,7 @@ impl UserDocumentDUBP { pub fn from_pest_pair_v10( pair: Pair<Rule>, ) -> Result<UserDocumentDUBP, TextDocumentParseError> { - let doc_type_v10_pair = pair.into_inner().next().unwrap(); // get and unwrap the `{DOC_TYPE}_v10` rule; never fails + let doc_type_v10_pair = unwrap!(pair.into_inner().next()); // get and unwrap the `{DOC_TYPE}_v10` rule; never fails match doc_type_v10_pair.as_rule() { Rule::idty_v10 => Ok(UserDocumentDUBP::Identity(IdentityDocument::V10( @@ -158,16 +159,11 @@ impl UserDocumentDUBP { #[cfg(test)] mod tests { + use super::*; use dubp_common_doc::parser::TextDocumentParser; use dubp_common_doc::traits::Document; use dubp_common_doc::Blockstamp; - use super::certification::CertificationDocumentParser; - use super::identity::IdentityDocumentParser; - use super::membership::MembershipDocumentParser; - use super::revocation::RevocationDocumentParser; - use super::transaction::TransactionDocumentParser; - use dup_crypto::keys::*; // simple text document for signature testing @@ -217,32 +213,32 @@ Timestamp: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 "; // good pair - let issuer1 = PubKey::Ed25519( - ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV") - .unwrap(), - ); + let issuer1 = PubKey::Ed25519(unwrap!( + ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "Fail to parse PublicKey from base58" + )); - let sig1 = Sig::Ed25519( + let sig1 = Sig::Ed25519(unwrap!( ed25519::Signature::from_base64( "1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMM\ mQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==", - ) - .unwrap(), - ); + ), + "Fail to parse Signature from base64" + )); // incorrect pair - let issuer2 = PubKey::Ed25519( - ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt32bzHbA3NJR46DeQYCS2qQdLV") - .unwrap(), - ); + let issuer2 = PubKey::Ed25519(unwrap!( + ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt32bzHbA3NJR46DeQYCS2qQdLV"), + "Fail to parse PublicKey from base58" + )); - let sig2 = Sig::Ed25519( + let sig2 = Sig::Ed25519(unwrap!( ed25519::Signature::from_base64( "1eubHHbuNfilHHH0G2bI30iZzebQ2cQ1PC7uPAw08FGMM\ mQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==", - ) - .unwrap(), - ); + ), + "Fail to parse Signature from base64" + )); { let doc = PlainTextDocument { @@ -317,7 +313,10 @@ UniqueID: elois Timestamp: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 Ydnclvw76/JHcKSmU9kl9Ie0ne5/X8NYOqPqbGnufIK3eEPRYYdEYaQh+zffuFhbtIRjv6m/DkVLH5cLy/IyAg=="; - let doc = IdentityDocumentParser::parse(text).unwrap(); + let doc = unwrap!( + IdentityDocumentParser::parse(text), + "Fail to parse IdentityDocument" + ); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); } @@ -334,7 +333,10 @@ UserID: elois CertTS: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 FFeyrvYio9uYwY5aMcDGswZPNjGLrl8THn9l3EPKSNySD3SDSHjCljSfFEwb87sroyzJQoVzPwER0sW/cbZMDg=="; - let doc = MembershipDocumentParser::parse(text).unwrap(); + let doc = unwrap!( + MembershipDocumentParser::parse(text), + "Fail to parse MembershipDocument" + ); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); } @@ -352,7 +354,10 @@ IdtySignature: DjeipIeb/RF0tpVCnVnuw6mH1iLJHIsDfPGLR90Twy3PeoaDz6Yzhc/UjLWqHCi5Y CertTimestamp: 99956-00000472758331FDA8388E30E50CA04736CBFD3B7C21F34E74707107794B56DD Hkps1QU4HxIcNXKT8YmprYTVByBhPP1U2tIM7Z8wENzLKIWAvQClkAvBE7pW9dnVa18sJIJhVZUcRrPAZfmjBA=="; - let doc = CertificationDocumentParser::parse(text).unwrap(); + let doc = unwrap!( + CertificationDocumentParser::parse(text), + "Fail to parse CertificationDocument" + ); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); } @@ -368,7 +373,10 @@ IdtyTimestamp: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B85 IdtySignature: 1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg== XXOgI++6qpY9O31ml/FcfbXCE6aixIrgkT5jL7kBle3YOMr+8wrp7Rt+z9hDVjrNfYX2gpeJsuMNfG4T/fzVDQ=="; - let doc = RevocationDocumentParser::parse(text).unwrap(); + let doc = unwrap!( + RevocationDocumentParser::parse(text), + "Fail to parse RevocationDocument" + ); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); } @@ -393,7 +401,10 @@ Outputs: Comment: c est pour 2 mois d adhesion ressourcerie lnpuFsIymgz7qhKF/GsZ3n3W8ZauAAfWmT4W0iJQBLKJK2GFkesLWeMj/+GBfjD6kdkjreg9M6VfkwIZH+hCCQ=="; - let doc = TransactionDocumentParser::parse(text).unwrap(); + let doc = unwrap!( + TransactionDocumentParser::parse(text), + "Fail to parse TransactionDocument" + ); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()); } diff --git a/lib/dubp/user-docs/src/documents/revocation.rs b/lib/dubp/user-docs/src/documents/revocation.rs index bc4826bebb3a3e0b9e4173b76f3ec97973e4c04b..543b76e3aafe4032c3f9658a62f8150f42bdc377 100644 --- a/lib/dubp/user-docs/src/documents/revocation.rs +++ b/lib/dubp/user-docs/src/documents/revocation.rs @@ -102,12 +102,12 @@ impl TextDocumentParser<Rule> for RevocationDocumentParser { fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> { let mut revoc_pairs = DocumentsParser::parse(Rule::revoc, doc)?; - let revoc_pair = revoc_pairs.next().unwrap(); // get and unwrap the `revoc` rule; never fails + let revoc_pair = unwrap!(revoc_pairs.next(), "Fail to parse Rule::revoc"); // get and unwrap the `revoc` rule; never fails Self::from_pest_pair(revoc_pair) } #[inline] fn from_pest_pair(pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let revoc_vx_pair = pair.into_inner().next().unwrap(); // get and unwrap the `revoc_vX` rule; never fails + let revoc_vx_pair = unwrap!(pair.into_inner().next(), "Fail to parse Rule::revoc_vX"); // get and unwrap the `revoc_vX` rule; never fails match revoc_vx_pair.as_rule() { Rule::revoc_v10 => Self::from_versioned_pest_pair(10, revoc_vx_pair), diff --git a/lib/dubp/user-docs/src/documents/revocation/v10.rs b/lib/dubp/user-docs/src/documents/revocation/v10.rs index 5809e977fbb2fc5e38be9095a587e239188f307b..8f5dffa4d4c4f32ac8334f3c182da1328429084e 100644 --- a/lib/dubp/user-docs/src/documents/revocation/v10.rs +++ b/lib/dubp/user-docs/src/documents/revocation/v10.rs @@ -154,7 +154,7 @@ impl RevocationDocumentV10 { match field.as_rule() { Rule::currency => currency = field.as_str(), Rule::pubkey => pubkeys.push(PubKey::Ed25519( - ed25519::PublicKey::from_base58(field.as_str()).unwrap(), // Grammar ensures that we have a base58 string. + unwrap!(ed25519::PublicKey::from_base58(field.as_str())), // Grammar ensures that we have a base58 string. )), Rule::uid => { uid = field.as_str(); @@ -162,16 +162,16 @@ impl RevocationDocumentV10 { Rule::blockstamp => { let mut inner_rules = field.into_inner(); // { integer ~ "-" ~ hash } - let block_id: &str = inner_rules.next().unwrap().as_str(); - let block_hash: &str = inner_rules.next().unwrap().as_str(); + let block_id: &str = unwrap!(inner_rules.next()).as_str(); + let block_hash: &str = unwrap!(inner_rules.next()).as_str(); blockstamps.push(Blockstamp { - id: BlockNumber(block_id.parse().unwrap()), // Grammar ensures that we have a digits string. - hash: BlockHash(Hash::from_hex(block_hash).unwrap()), // Grammar ensures that we have an hexadecimal string. + id: BlockNumber(unwrap!(block_id.parse())), // Grammar ensures that we have a digits string. + hash: BlockHash(unwrap!(Hash::from_hex(block_hash))), // Grammar ensures that we have an hexadecimal string. }); } Rule::ed25519_sig => { sigs.push(Sig::Ed25519( - ed25519::Signature::from_base64(field.as_str()).unwrap(), // Grammar ensures that we have a base64 string. + unwrap!(ed25519::Signature::from_base64(field.as_str())), // Grammar ensures that we have a base64 string. )); } Rule::EOI => (), @@ -303,25 +303,28 @@ mod tests { #[test] fn generate_real_document() { - let keypair = ed25519::KeyPairFromSeed32Generator::generate( - Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV").unwrap(), - ); + let keypair = ed25519::KeyPairFromSeed32Generator::generate(unwrap!( + Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "fail to build Seed32" + )); let pubkey = PubKey::Ed25519(keypair.public_key()); let signator = SignatorEnum::Ed25519(keypair.generate_signator().expect("fail to gen signator")); - let sig = Sig::Ed25519(ed25519::Signature::from_base64( + let sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "gBD2mCr7E/tW8u3wqVK7IWtQB6IKxddg13UMl9ypVsv/VhqhAFTBba9BwoK5t6H9eqF1d+4sCB3WY2eJ/yuUAg==", - ).unwrap()); + ), "Fail to build Signature")); - let identity_blockstamp = Blockstamp::from_string( - "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", - ) - .unwrap(); + let identity_blockstamp = unwrap!( + Blockstamp::from_string( + "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + ), + "Fail to build Blockstamp" + ); - let identity_sig = Sig::Ed25519(ed25519::Signature::from_base64( + let identity_sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg==", - ).unwrap()); + ), "Fail to build Signature")); let builder = RevocationDocumentV10Builder { currency: "g1", @@ -362,7 +365,8 @@ IdtyTimestamp: 0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B85 IdtySignature: 1eubHHbuNfilHMM0G2bI30iZzebQ2cQ1PC7uPAw08FGMMmQCRerlF/3pc4sAcsnexsxBseA/3lY03KlONqJBAg== XXOgI++6qpY9O31ml/FcfbXCE6aixIrgkT5jL7kBle3YOMr+8wrp7Rt+z9hDVjrNfYX2gpeJsuMNfG4T/fzVDQ=="; - let doc = RevocationDocumentParser::parse(doc).unwrap(); + let doc = + RevocationDocumentParser::parse(doc).expect("fail to parse test revocation document !"); println!("Doc : {:?}", doc); assert!(doc.verify_signatures().is_ok()) } diff --git a/lib/dubp/user-docs/src/documents/transaction.rs b/lib/dubp/user-docs/src/documents/transaction.rs index cffe0763f7260fc5f78cbbb9483e4fa5ca16598d..ea2d33a57ab86500179077b48966c59eddb16cb8 100644 --- a/lib/dubp/user-docs/src/documents/transaction.rs +++ b/lib/dubp/user-docs/src/documents/transaction.rs @@ -81,29 +81,28 @@ impl ToString for TransactionInput { impl TransactionInput { fn from_pest_pair(mut pairs: Pairs<Rule>) -> TransactionInput { - let tx_input_type_pair = pairs.next().unwrap(); + let tx_input_type_pair = unwrap!(pairs.next()); match tx_input_type_pair.as_rule() { Rule::tx_input_du => { let mut inner_rules = tx_input_type_pair.into_inner(); // ${ tx_amount ~ ":" ~ tx_amount_base ~ ":D:" ~ pubkey ~ ":" ~ du_block_id } TransactionInput::D( - TxAmount(inner_rules.next().unwrap().as_str().parse().unwrap()), - TxBase(inner_rules.next().unwrap().as_str().parse().unwrap()), - PubKey::Ed25519( - ed25519::PublicKey::from_base58(inner_rules.next().unwrap().as_str()) - .unwrap(), - ), - BlockNumber(inner_rules.next().unwrap().as_str().parse().unwrap()), + TxAmount(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), + TxBase(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), + PubKey::Ed25519(unwrap!(ed25519::PublicKey::from_base58( + unwrap!(inner_rules.next()).as_str() + ))), + BlockNumber(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), ) } Rule::tx_input_tx => { let mut inner_rules = tx_input_type_pair.into_inner(); // ${ tx_amount ~ ":" ~ tx_amount_base ~ ":D:" ~ pubkey ~ ":" ~ du_block_id } TransactionInput::T( - TxAmount(inner_rules.next().unwrap().as_str().parse().unwrap()), - TxBase(inner_rules.next().unwrap().as_str().parse().unwrap()), - Hash::from_hex(inner_rules.next().unwrap().as_str()).unwrap(), - OutputIndex(inner_rules.next().unwrap().as_str().parse().unwrap()), + TxAmount(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), + TxBase(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), + unwrap!(Hash::from_hex(unwrap!(inner_rules.next()).as_str())), + OutputIndex(unwrap!(unwrap!(inner_rules.next()).as_str().parse())), ) } _ => fatal_error!("unexpected rule: {:?}", tx_input_type_pair.as_rule()), // Grammar ensures that we never reach this line @@ -117,7 +116,7 @@ impl FromStr for TransactionInput { fn from_str(source: &str) -> Result<Self, Self::Err> { match DocumentsParser::parse(Rule::tx_input, source) { Ok(mut pairs) => Ok(TransactionInput::from_pest_pair( - pairs.next().unwrap().into_inner(), + unwrap!(pairs.next()).into_inner(), )), Err(_) => Err(TextDocumentParseError::InvalidInnerFormat( "Invalid unlocks !".to_owned(), @@ -211,18 +210,16 @@ impl TransactionInputUnlocks { for unlock_field in pairs { // ${ input_index ~ ":" ~ unlock_cond ~ (" " ~ unlock_cond)* } match unlock_field.as_rule() { - Rule::input_index => input_index = unlock_field.as_str().parse().unwrap(), - Rule::unlock_sig => unlock_conds.push(TransactionUnlockProof::Sig( - unlock_field + Rule::input_index => input_index = unwrap!(unlock_field.as_str().parse()), + Rule::unlock_sig => { + unlock_conds.push(TransactionUnlockProof::Sig(unwrap!(unwrap!(unlock_field .into_inner() - .next() - .unwrap() - .as_str() - .parse() - .unwrap(), - )), + .next()) + .as_str() + .parse()))) + } Rule::unlock_xhx => unlock_conds.push(TransactionUnlockProof::Xhx(String::from( - unlock_field.into_inner().next().unwrap().as_str(), + unwrap!(unlock_field.into_inner().next()).as_str(), ))), _ => fatal_error!("unexpected rule: {:?}", unlock_field.as_rule()), // Grammar ensures that we never reach this line } @@ -240,7 +237,7 @@ impl FromStr for TransactionInputUnlocks { fn from_str(source: &str) -> Result<Self, Self::Err> { match DocumentsParser::parse(Rule::tx_unlock, source) { Ok(mut pairs) => Ok(TransactionInputUnlocks::from_pest_pair( - pairs.next().unwrap().into_inner(), + unwrap!(pairs.next()).into_inner(), )), Err(_) => Err(TextDocumentParseError::InvalidInnerFormat( "Invalid unlocks !".to_owned(), @@ -331,8 +328,8 @@ macro_rules! utxo_conds_wrap_op_chain { Box::new(conds_subgroups[1].clone()), ) } else if conds_subgroups.len() > 2 { - let last_subgroup = conds_subgroups.pop().unwrap(); - let previous_last_subgroup = conds_subgroups.pop().unwrap(); + let last_subgroup = unwrap!(conds_subgroups.pop()); + let previous_last_subgroup = unwrap!(conds_subgroups.pop()); conds_subgroups.push($op( Box::new(previous_last_subgroup), Box::new(last_subgroup), @@ -373,23 +370,26 @@ impl UTXOConditionsGroup { &mut conds_subgroups, ))) } - Rule::output_cond_sig => { - UTXOConditionsGroup::Single(TransactionOutputCondition::Sig(PubKey::Ed25519( - ed25519::PublicKey::from_base58(pair.into_inner().next().unwrap().as_str()) - .unwrap(), - ))) - } - Rule::output_cond_xhx => UTXOConditionsGroup::Single(TransactionOutputCondition::Xhx( - Hash::from_hex(pair.into_inner().next().unwrap().as_str()).unwrap(), + Rule::output_cond_sig => UTXOConditionsGroup::Single(TransactionOutputCondition::Sig( + PubKey::Ed25519(unwrap!(ed25519::PublicKey::from_base58( + unwrap!(pair.into_inner().next()).as_str() + ))), )), - Rule::output_cond_csv => UTXOConditionsGroup::Single(TransactionOutputCondition::Csv( - pair.into_inner().next().unwrap().as_str().parse().unwrap(), + Rule::output_cond_xhx => UTXOConditionsGroup::Single(TransactionOutputCondition::Xhx( + unwrap!(Hash::from_hex(unwrap!(pair.into_inner().next()).as_str())), )), - Rule::output_cond_cltv => { - UTXOConditionsGroup::Single(TransactionOutputCondition::Cltv( - pair.into_inner().next().unwrap().as_str().parse().unwrap(), - )) + Rule::output_cond_csv => { + UTXOConditionsGroup::Single(TransactionOutputCondition::Csv(unwrap!(unwrap!(pair + .into_inner() + .next()) + .as_str() + .parse()))) } + Rule::output_cond_cltv => UTXOConditionsGroup::Single( + TransactionOutputCondition::Cltv(unwrap!(unwrap!(pair.into_inner().next()) + .as_str() + .parse())), + ), _ => fatal_error!("unexpected rule: {:?}", pair.as_rule()), // Grammar ensures that we never reach this line } } @@ -451,9 +451,9 @@ impl ToString for TransactionOutput { impl TransactionOutput { fn from_pest_pair(mut utxo_pairs: Pairs<Rule>) -> TransactionOutput { - let amount = TxAmount(utxo_pairs.next().unwrap().as_str().parse().unwrap()); - let base = TxBase(utxo_pairs.next().unwrap().as_str().parse().unwrap()); - let conditions_pairs = utxo_pairs.next().unwrap(); + let amount = TxAmount(unwrap!(unwrap!(utxo_pairs.next()).as_str().parse())); + let base = TxBase(unwrap!(unwrap!(utxo_pairs.next()).as_str().parse())); + let conditions_pairs = unwrap!(utxo_pairs.next()); let conditions_origin_str = conditions_pairs.as_str(); TransactionOutput { amount, @@ -490,14 +490,14 @@ impl FromStr for TransactionOutput { match DocumentsParser::parse(Rule::tx_output, &str_to_parse) { Ok(mut utxo_pairs) => { let mut output = - TransactionOutput::from_pest_pair(utxo_pairs.next().unwrap().into_inner()); + TransactionOutput::from_pest_pair(unwrap!(utxo_pairs.next()).into_inner()); output.conditions.origin_str = conditions_origin_str.map(ToString::to_string); Ok(output) } Err(_) => match DocumentsParser::parse(Rule::tx_output, source) { Ok(mut utxo_pairs) => { let mut output = - TransactionOutput::from_pest_pair(utxo_pairs.next().unwrap().into_inner()); + TransactionOutput::from_pest_pair(unwrap!(utxo_pairs.next()).into_inner()); output.conditions.origin_str = conditions_origin_str.map(ToString::to_string); Ok(output) } @@ -667,16 +667,16 @@ impl TransactionDocument { Rule::blockstamp => { let mut inner_rules = field.into_inner(); // ${ block_id ~ "-" ~ hash } - let block_id: &str = inner_rules.next().unwrap().as_str(); - let block_hash: &str = inner_rules.next().unwrap().as_str(); + let block_id: &str = unwrap!(inner_rules.next()).as_str(); + let block_hash: &str = unwrap!(inner_rules.next()).as_str(); blockstamp = Blockstamp { - id: BlockNumber(block_id.parse().unwrap()), // Grammar ensures that we have a digits string. - hash: BlockHash(Hash::from_hex(block_hash).unwrap()), // Grammar ensures that we have an hexadecimal string. + id: BlockNumber(unwrap!(block_id.parse())), // Grammar ensures that we have a digits string. + hash: BlockHash(unwrap!(Hash::from_hex(block_hash))), // Grammar ensures that we have an hexadecimal string. }; } - Rule::tx_locktime => locktime = field.as_str().parse().unwrap(), // Grammar ensures that we have digits characters. + Rule::tx_locktime => locktime = unwrap!(field.as_str().parse()), // Grammar ensures that we have digits characters. Rule::pubkey => issuers.push(PubKey::Ed25519( - ed25519::PublicKey::from_base58(field.as_str()).unwrap(), // Grammar ensures that we have a base58 string. + unwrap!(ed25519::PublicKey::from_base58(field.as_str())), // Grammar ensures that we have a base58 string. )), Rule::tx_input => inputs.push(TransactionInput::from_pest_pair(field.into_inner())), Rule::tx_unlock => { @@ -688,7 +688,7 @@ impl TransactionDocument { Rule::tx_comment => comment = field.as_str(), Rule::ed25519_sig => { sigs.push(Sig::Ed25519( - ed25519::Signature::from_base64(field.as_str()).unwrap(), // Grammar ensures that we have a base64 string. + unwrap!(ed25519::Signature::from_base64(field.as_str())), // Grammar ensures that we have a base64 string. )); } Rule::EOI => (), @@ -915,15 +915,15 @@ impl TextDocumentParser<Rule> for TransactionDocumentParser { fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> { let mut tx_pairs = DocumentsParser::parse(Rule::tx, doc)?; - let tx_pair = tx_pairs.next().unwrap(); // get and unwrap the `tx` rule; never fails + let tx_pair = unwrap!(tx_pairs.next()); // get and unwrap the `tx` rule; never fails Self::from_pest_pair(tx_pair) } #[inline] fn from_pest_pair(pair: Pair<Rule>) -> Result<Self::DocumentType, TextDocumentParseError> { - let tx_vx_pair = pair.into_inner().next().unwrap(); // get and unwrap the `tx_vX` rule; never fails + let tx_vx_pair = unwrap!(pair.into_inner().next()); // get and unwrap the `tx_vX` rule; never fails match tx_vx_pair.as_rule() { - Rule::tx_v10 => Ok(TransactionDocument::from_pest_pair(tx_vx_pair)?), + Rule::tx_v10 => TransactionDocument::from_pest_pair(tx_vx_pair), _ => Err(TextDocumentParseError::UnexpectedRule(format!( "{:#?}", tx_vx_pair.as_rule() @@ -952,21 +952,24 @@ mod tests { #[test] fn generate_real_document() { - let keypair = ed25519::KeyPairFromSeed32Generator::generate( - Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV").unwrap(), - ); + let keypair = ed25519::KeyPairFromSeed32Generator::generate(unwrap!( + Seed32::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "Fail to parse Seed32" + )); let pubkey = PubKey::Ed25519(keypair.public_key()); let signator = SignatorEnum::Ed25519(keypair.generate_signator().expect("fail to gen signator")); - let sig = Sig::Ed25519(ed25519::Signature::from_base64( + let sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "cq86RugQlqAEyS8zFkB9o0PlWPSb+a6D/MEnLe8j+okyFYf/WzI6pFiBkQ9PSOVn5I0dwzVXg7Q4N1apMWeGAg==", - ).unwrap()); + ), "Fail to parse Signature")); - let block = Blockstamp::from_string( - "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", - ) - .unwrap(); + let block = unwrap!( + Blockstamp::from_string( + "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + ), + "Fail to parse blockstamp" + ); let builder = TransactionDocumentBuilder { currency: "duniter_unit_test_currency", @@ -976,10 +979,10 @@ mod tests { inputs: &vec![TransactionInput::D( TxAmount(10), TxBase(0), - PubKey::Ed25519( - ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV") - .unwrap(), - ), + PubKey::Ed25519(unwrap!( + ed25519::PublicKey::from_base58("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"), + "Fail to parse PublicKey" + )), BlockNumber(0), )], unlocks: &vec![TransactionInputUnlocks { @@ -1013,19 +1016,21 @@ mod tests { #[test] fn compute_transaction_hash() { - let pubkey = PubKey::Ed25519( - ed25519::PublicKey::from_base58("FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J") - .unwrap(), - ); + let pubkey = PubKey::Ed25519(unwrap!( + ed25519::PublicKey::from_base58("FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J"), + "Fail to parse PublicKey" + )); - let sig = Sig::Ed25519(ed25519::Signature::from_base64( + let sig = Sig::Ed25519(unwrap!(ed25519::Signature::from_base64( "XEwKwKF8AI1gWPT7elR4IN+bW3Qn02Dk15TEgrKtY/S2qfZsNaodsLofqHLI24BBwZ5aadpC88ntmjo/UW9oDQ==", - ).unwrap()); + ), "Fail to parse Signature")); - let block = Blockstamp::from_string( - "60-00001FE00410FCD5991EDD18AA7DDF15F4C8393A64FA92A1DB1C1CA2E220128D", - ) - .unwrap(); + let block = unwrap!( + Blockstamp::from_string( + "60-00001FE00410FCD5991EDD18AA7DDF15F4C8393A64FA92A1DB1C1CA2E220128D", + ), + "Fail to parse Blockstamp" + ); let builder = TransactionDocumentBuilder { currency: "g1", @@ -1035,8 +1040,12 @@ mod tests { inputs: &vec![TransactionInput::T( TxAmount(950), TxBase(0), - Hash::from_hex("2CF1ACD8FE8DC93EE39A1D55881C50D87C55892AE8E4DB71D4EBAB3D412AA8FD") - .unwrap(), + unwrap!( + Hash::from_hex( + "2CF1ACD8FE8DC93EE39A1D55881C50D87C55892AE8E4DB71D4EBAB3D412AA8FD" + ), + "Fail to parse Hash" + ), OutputIndex(1), )], unlocks: &vec![ diff --git a/lib/dubp/user-docs/src/lib.rs b/lib/dubp/user-docs/src/lib.rs index 56608e3ed66f5164ccd2b28325c88f4429565e1f..fd680b6193e99586ae7d944c988bedafe84ff64a 100644 --- a/lib/dubp/user-docs/src/lib.rs +++ b/lib/dubp/user-docs/src/lib.rs @@ -16,6 +16,8 @@ //! Implements the Dunitrust Documents Protocol. #![deny( + clippy::option_unwrap_used, + clippy::result_unwrap_used, missing_debug_implementations, missing_copy_implementations, trivial_casts,