rustauth-core 0.2.0

Core types and primitives for RustAuth.
Documentation
use rustauth_core::cookies::{ChunkedCookieStore, CookieOptions};

#[test]
fn chunked_cookie_store_returns_single_cookie_for_small_values() {
    let store = ChunkedCookieStore::new("session_data", CookieOptions::default(), "");

    let cookies = store.chunk("abc");

    assert_eq!(cookies.len(), 1);
    assert_eq!(cookies[0].name, "session_data");
    assert_eq!(cookies[0].value, "abc");
}

#[test]
fn chunked_cookie_store_splits_large_values() {
    let store = ChunkedCookieStore::new("session_data", CookieOptions::default(), "");

    let cookies = store.chunk(&"x".repeat(5000));

    assert!(cookies.iter().any(|cookie| cookie.name == "session_data.0"));
    assert!(cookies.iter().any(|cookie| cookie.name == "session_data.1"));
}

#[test]
fn chunked_cookie_store_joins_existing_chunks_by_index() {
    let store = ChunkedCookieStore::new(
        "session_data",
        CookieOptions::default(),
        "session_data.1=world; session_data.0=hello",
    );

    assert_eq!(store.value().as_deref(), Some("helloworld"));
}

#[test]
fn chunked_cookie_store_cleans_existing_chunks() {
    let store = ChunkedCookieStore::new(
        "session_data",
        CookieOptions::default(),
        "session_data.0=hello; session_data.1=world",
    );

    let clean = store.clean();

    assert_eq!(clean.len(), 2);
    assert!(clean.iter().all(|cookie| cookie.value.is_empty()));
    assert!(clean
        .iter()
        .all(|cookie| cookie.attributes.max_age == Some(0)));
}