wae-crypto 0.0.2

WAE Crypto - 统一加密抽象模块
Documentation
use wae_crypto::{base64_decode, base64_encode, base64url_decode, base64url_encode};

#[test]
fn test_base64_encode() {
    let data = b"Hello, World!";
    let encoded = base64_encode(data);
    assert_eq!(encoded, "SGVsbG8sIFdvcmxkIQ==");
}

#[test]
fn test_base64_decode() {
    let encoded = "SGVsbG8sIFdvcmxkIQ==";
    let decoded = base64_decode(encoded).unwrap();
    assert_eq!(decoded, b"Hello, World!");
}

#[test]
fn test_base64_roundtrip() {
    let test_cases: Vec<&[u8]> = vec![
        b"",
        b"a",
        b"ab",
        b"abc",
        b"abcd",
        b"Hello, World!",
        b"The quick brown fox jumps over the lazy dog",
        &[0, 1, 2, 3, 4, 5, 255, 254, 253, 252, 251],
    ];

    for data in test_cases {
        let encoded = base64_encode(data);
        let decoded = base64_decode(&encoded).unwrap();
        assert_eq!(decoded, data);
    }
}

#[test]
fn test_base64url_encode() {
    let data = b"Hello, World!";
    let encoded = base64url_encode(data);
    assert_eq!(encoded, "SGVsbG8sIFdvcmxkIQ");
}

#[test]
fn test_base64url_decode() {
    let encoded = "SGVsbG8sIFdvcmxkIQ";
    let decoded = base64url_decode(encoded).unwrap();
    assert_eq!(decoded, b"Hello, World!");
}

#[test]
fn test_base64url_roundtrip() {
    let test_cases: Vec<&[u8]> = vec![
        b"",
        b"a",
        b"ab",
        b"abc",
        b"abcd",
        b"Hello, World!",
        b"The quick brown fox jumps over the lazy dog",
        &[0, 1, 2, 3, 4, 5, 255, 254, 253, 252, 251],
    ];

    for data in test_cases {
        let encoded = base64url_encode(data);
        assert!(!encoded.contains('+'));
        assert!(!encoded.contains('/'));
        assert!(!encoded.contains('='));
        let decoded = base64url_decode(&encoded).unwrap();
        assert_eq!(decoded, data);
    }
}

#[test]
fn test_base64_invalid_input() {
    let invalid_inputs = vec!["invalid!", "SGVsbG8=!", "SGVsbG8==", "SGVsbG8"];

    for input in invalid_inputs {
        let result = base64_decode(input);
        if input != "SGVsbG8==" && input != "SGVsbG8" {
            assert!(result.is_err());
        }
    }
}