use-origin 0.0.1

Small web origin utilities for RustUse
Documentation
use use_origin::{
    default_port_for_scheme, extract_origin, format_origin, is_secure_origin, parse_origin,
    same_origin,
};

#[test]
fn parses_origins() {
    let origin = parse_origin("https://example.com:8443").unwrap();

    assert_eq!(origin.scheme, "https");
    assert_eq!(origin.host, "example.com");
    assert_eq!(origin.port, Some(8443));
    assert_eq!(format_origin(&origin), "https://example.com:8443");
}

#[test]
fn extracts_origins_from_urls() {
    let origin = extract_origin("https://example.com/docs?page=2").unwrap();
    assert_eq!(origin.host, "example.com");
}

#[test]
fn compares_same_origins() {
    assert!(same_origin(
        "https://example.com/docs",
        "https://example.com/api"
    ));
    assert!(same_origin(
        "https://example.com",
        "https://example.com:443/docs"
    ));
    assert!(!same_origin("https://example.com", "http://example.com"));
}

#[test]
fn detects_secure_origins_and_default_ports() {
    assert!(is_secure_origin("https://example.com"));
    assert!(!is_secure_origin("http://example.com"));
    assert_eq!(default_port_for_scheme("https"), Some(443));
}

#[test]
fn handles_malformed_and_empty_input() {
    assert_eq!(parse_origin("https://example.com/docs"), None);
    assert_eq!(extract_origin("not an origin"), None);
    assert_eq!(extract_origin(""), None);
}