From ca2054646a90fe4f77bd624bf57dc3b13f932d37 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Sat, 22 Jun 2024 22:02:07 +0200 Subject: [PATCH] otp-uri: Add a test case for LjL's issue See Matrix conversation --- src/models/otp_uri.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/models/otp_uri.rs b/src/models/otp_uri.rs index ee812ad..9a19077 100644 --- a/src/models/otp_uri.rs +++ b/src/models/otp_uri.rs @@ -10,7 +10,7 @@ use crate::{ }; #[allow(clippy::upper_case_acronyms)] -#[derive(Zeroize, ZeroizeOnDrop)] +#[derive(Debug, PartialEq, Eq, Zeroize, ZeroizeOnDrop)] pub struct OTPUri { #[zeroize(skip)] pub(crate) algorithm: Algorithm, @@ -251,4 +251,19 @@ mod tests { }; assert_eq!(String::from(uri), "otpauth://totp/account%20test?secret=dznF36H0IIg17rK&issuer=Test&algorithm=SHA1&digits=6&period=30"); } + + #[test] + fn ljl_issue() { + let uri = OTPUri { + algorithm: Algorithm::SHA512, + label: "SpidItalia%3REDACTED@REDACTED (persona fisica)".to_owned(), + secret: "REDACTED".to_owned(), + issuer: "SpidItalia".to_owned(), + method: Method::TOTP, + digits: Some(6), + period: Some(30), + counter: None, + }; + assert_eq!(OTPUri::from_str("otpauth://totp/SpidItalia%3REDACTED%40REDACTED%20(persona%20fisica)?period=30&digits=6&algorithm=SHA512&secret=REDACTED&issuer=SpidItalia").unwrap(), uri); + } }