asar-rust 0.1.0

Rust port of @electron/asar — create and extract Electron ASAR archives
Documentation
use asar_rust::path_validation::ensure_within;

#[test]
fn test_path_within_container() {
    let dir = std::env::temp_dir();
    let result = ensure_within(&dir, "subdir/file.txt");
    assert!(result.is_ok());
}

#[test]
fn test_path_equals_container() {
    let dir = std::env::temp_dir();
    let result = ensure_within(&dir, ".");
    assert!(result.is_ok());
}

#[test]
fn test_path_escape_with_dotdot() {
    let tmp = std::env::temp_dir();
    let container = tmp.join("asar-test-container");
    let outside = tmp.join("asar-test-outside");
    std::fs::create_dir_all(&container).unwrap();
    std::fs::create_dir_all(&outside).unwrap();

    let result = ensure_within(&container, "../asar-test-outside/somefile");
    assert!(result.is_err());

    std::fs::remove_dir_all(&container).unwrap();
    std::fs::remove_dir_all(&outside).unwrap();
}