rust-auth-utils 1.0.0

A rust port of @better-auth/utils.
Documentation
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");
}