use-cookie 0.0.1

Small cookie utilities for RustUse
Documentation
use use_cookie::{
    Cookie, build_cookie_header, cookie_name_is_valid, get_cookie, has_cookie, parse_cookie_header,
    parse_set_cookie_basic,
};

#[test]
fn parses_cookie_headers() {
    let cookies = parse_cookie_header("session=abc; theme=dark; empty=");

    assert_eq!(cookies.len(), 3);
    assert_eq!(cookies[0].name, "session");
    assert_eq!(cookies[1].value, "dark");
    assert_eq!(cookies[2].value, "");
}

#[test]
fn parses_set_cookie_headers() {
    let cookie = parse_set_cookie_basic(
        "session=abc; Path=/; Domain=example.com; Max-Age=60; Secure; HttpOnly; SameSite=Lax",
    )
    .unwrap();

    assert_eq!(cookie.name, "session");
    assert_eq!(cookie.value, "abc");
    assert_eq!(cookie.path.as_deref(), Some("/"));
    assert_eq!(cookie.domain.as_deref(), Some("example.com"));
    assert_eq!(cookie.max_age, Some(60));
    assert!(cookie.secure);
    assert!(cookie.http_only);
    assert_eq!(cookie.same_site.as_deref(), Some("Lax"));
}

#[test]
fn builds_cookie_headers() {
    let header = build_cookie_header(&[
        Cookie {
            name: String::from("session"),
            value: String::from("abc"),
        },
        Cookie {
            name: String::from("theme"),
            value: String::from("dark"),
        },
    ]);

    assert_eq!(header, "session=abc; theme=dark");
}

#[test]
fn looks_up_cookies() {
    assert_eq!(
        get_cookie("session=abc; theme=dark", "theme").as_deref(),
        Some("dark")
    );
    assert!(has_cookie("session=abc; theme=dark", "session"));
}

#[test]
fn reports_missing_cookies() {
    assert_eq!(get_cookie("session=abc", "theme"), None);
    assert!(!has_cookie("session=abc", "theme"));
}

#[test]
fn validates_cookie_names() {
    assert!(cookie_name_is_valid("session_id"));
    assert!(!cookie_name_is_valid("bad name"));
}

#[test]
fn handles_malformed_and_empty_input() {
    assert!(parse_cookie_header("").is_empty());
    assert_eq!(parse_set_cookie_basic("broken"), None);
    assert_eq!(parse_set_cookie_basic("bad name=value"), None);
}