use crate::hash::create_hash;
use crate::types::{EncodingFormat, SHAFamily};
#[tokio::test]
async fn test_sha256_no_encoding() {
let hasher = create_hash(SHAFamily::SHA256, None);
let result = hasher.digest(b"test").await.unwrap();
assert_eq!(result.len(), 32);
}
#[tokio::test]
async fn test_sha256_hex_encoding() {
let hasher = create_hash(SHAFamily::SHA256, Some(EncodingFormat::Hex));
let result = hasher.digest_string("test").await.unwrap();
assert_eq!(
result,
"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
);
}
#[tokio::test]
async fn test_sha256_base64_encoding() {
let hasher = create_hash(SHAFamily::SHA256, Some(EncodingFormat::Base64));
let result = hasher.digest_string("test").await.unwrap();
assert_eq!(result, "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=");
}
#[tokio::test]
async fn test_sha256_base64url_encoding() {
let hasher = create_hash(SHAFamily::SHA256, Some(EncodingFormat::Base64Url));
let result = hasher.digest_string("test").await.unwrap();
assert_eq!(result, "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg=");
}
#[tokio::test]
async fn test_sha256_base64url_nopad_encoding() {
let hasher = create_hash(SHAFamily::SHA256, Some(EncodingFormat::Base64UrlNoPad));
let result = hasher.digest_string("test").await.unwrap();
assert_eq!(result, "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg");
}
#[tokio::test]
async fn test_different_sha_algorithms() {
let test_data = "test";
let sha1_hasher = create_hash(SHAFamily::SHA1, Some(EncodingFormat::Hex));
let sha1_result = sha1_hasher.digest_string(test_data).await.unwrap();
assert_eq!(sha1_result, "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3");
let sha384_hasher = create_hash(SHAFamily::SHA384, Some(EncodingFormat::Hex));
let sha384_result = sha384_hasher.digest_string(test_data).await.unwrap();
assert_eq!(sha384_result, "768412320f7b0aa5812fce428dc4706b3cae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf17a0a9");
let sha512_hasher = create_hash(SHAFamily::SHA512, Some(EncodingFormat::Hex));
let sha512_result = sha512_hasher.digest_string(test_data).await.unwrap();
assert_eq!(sha512_result, "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff");
}