Add tests

Signed-off-by: constantoine <cleo.rebert-ext@treezor.com>
This commit is contained in:
constantoine 2022-10-10 11:08:40 +02:00
parent 9a202c20ec
commit 60514fde9a
No known key found for this signature in database
GPG Key ID: 0FA097951CF65367
1 changed files with 98 additions and 0 deletions

View File

@ -750,6 +750,31 @@ mod tests {
assert_eq!(url.as_str(), "otpauth://totp/Github:constantoine%40github.com?issuer=Github&secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=6&algorithm=SHA512");
}
#[test]
#[cfg(all(feature = "otpauth", feature = "gen_secret"))]
fn ttl() {
let secret = Secret::default();
let totp_rfc = Rfc6238::with_defaults(secret.to_bytes().unwrap()).unwrap();
let totp = TOTP::from_rfc6238(totp_rfc);
assert!(totp.is_ok());
}
#[test]
#[cfg(feature = "otpauth")]
fn ttl_ok() {
let totp = TOTP::new(
Algorithm::SHA512,
6,
1,
1,
"TestSecretSuperSecret",
Some("Github".to_string()),
"constantoine@github.com".to_string(),
)
.unwrap();
assert!(totp.ttl().is_ok());
}
#[test]
#[cfg(not(feature = "otpauth"))]
fn returns_base32() {
@ -889,6 +914,24 @@ mod tests {
assert_eq!(totp.step, 60);
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_query_sha512() {
let totp = TOTP::<Vec<u8>>::from_url("otpauth://totp/GitHub:test?secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=SHA512").unwrap();
assert_eq!(
totp.secret,
base32::decode(
base32::Alphabet::RFC4648 { padding: false },
"KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ"
)
.unwrap()
);
assert_eq!(totp.algorithm, Algorithm::SHA512);
assert_eq!(totp.digits, 8);
assert_eq!(totp.skew, 1);
assert_eq!(totp.step, 60);
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_to_url() {
@ -906,6 +949,24 @@ mod tests {
assert_eq!(totp.get_url(), totp_bis.get_url());
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_unknown_param() {
let totp = TOTP::<Vec<u8>>::from_url("otpauth://totp/GitHub:test?secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=SHA256&foo=bar").unwrap();
assert_eq!(
totp.secret,
base32::decode(
base32::Alphabet::RFC4648 { padding: false },
"KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ"
)
.unwrap()
);
assert_eq!(totp.algorithm, Algorithm::SHA256);
assert_eq!(totp.digits, 8);
assert_eq!(totp.skew, 1);
assert_eq!(totp.step, 60);
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_issuer_special() {
@ -943,6 +1004,24 @@ mod tests {
assert_eq!(totp.issuer.unwrap(), "GitHub");
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_wrong_scheme() {
let totp = TOTP::<Vec<u8>>::from_url("http://totp/GitHub:test?issuer=GitHub&secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=SHA256");
assert!(totp.is_err());
let err = totp.unwrap_err();
assert!(matches!(err, TotpUrlError::Scheme(_)));
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_wrong_algo() {
let totp = TOTP::<Vec<u8>>::from_url("otpauth://totp/GitHub:test?issuer=GitHub&secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=MD5");
assert!(totp.is_err());
let err = totp.unwrap_err();
assert!(matches!(err, TotpUrlError::Algorithm(_)));
}
#[test]
#[cfg(feature = "otpauth")]
fn from_url_query_different_issuers() {
@ -981,4 +1060,23 @@ mod tests {
"025809c9db9c2c918930e018549c90929a083ee757156737812bad40ded64312c1526c73d8f2f59d5c203b97141ddfc331b1192e234f4f43257f50a6d05e382f"
);
}
#[test]
#[cfg(feature = "qr")]
fn generates_qr_ok() {
use sha2::{Digest, Sha512};
let totp = TOTP::new(
Algorithm::SHA1,
6,
1,
1,
"TestSecretSuperSecret",
Some("Github".to_string()),
"constantoine@github.com".to_string(),
)
.unwrap();
let qr = totp.get_qr();
assert!(qr.is_ok());
}
}