use revue::utils::browser::{open_browser, open_file, open_folder, open_url, reveal_in_finder};
#[test]
fn test_functions_exist() {
let _ = open_browser;
let _ = open_url;
let _ = open_file;
let _ = open_folder;
let _ = reveal_in_finder;
}
#[test]
fn test_open_browser_return_type() {
let _: fn(&str) -> bool = open_browser;
}
#[test]
fn test_open_url_return_type() {
let _: fn(&str) -> Result<(), revue::utils::browser::BrowserError> = open_url;
}
#[test]
fn test_open_file_return_type() {
let _: fn(&str) -> bool = open_file;
}
#[test]
fn test_open_folder_return_type() {
let _: fn(&str) -> bool = open_folder;
}
#[test]
fn test_reveal_in_finder_return_type() {
let _: fn(&str) -> bool = reveal_in_finder;
}
#[test]
fn test_reject_shell_metacharacter_ampersand() {
assert!(!open_browser("https://example.com & malware.exe"));
assert!(open_url("https://example.com & malware.exe").is_err());
assert!(!open_folder("/path & rm -rf /"));
}
#[test]
fn test_reject_shell_metacharacter_pipe() {
assert!(!open_browser("https://example.com | cat /etc/passwd"));
assert!(open_url("url | malicious").is_err());
}
#[test]
fn test_reject_shell_metacharacter_semicolon() {
assert!(!open_browser("https://example.com; rm -rf /"));
assert!(open_url("url; malicious").is_err());
}
#[test]
fn test_reject_backtick() {
assert!(!open_browser("https://example.com`malicious`"));
assert!(open_url("url`malicious`").is_err());
}
#[test]
fn test_reject_newline() {
assert!(!open_browser("https://example.com\nrm -rf /"));
assert!(open_url("url\nmalicious").is_err());
}
#[test]
fn test_reject_command_substitution() {
assert!(!open_browser("https://example.com$(rm -rf /)"));
assert!(open_url("url$(malicious)").is_err());
}
#[test]
fn test_reject_empty_url() {
assert!(open_url("").is_err());
}
#[test]
fn test_reject_unicode_control_characters() {
assert!(open_url("https://example.com\u{0090}malicious").is_err());
}
#[test]
fn test_reject_file_url_with_path_traversal() {
assert!(open_url("file://../../../etc/passwd").is_err());
}
#[test]
fn test_reject_remote_file_urls() {
assert!(open_url("file://evil.com/etc/passwd").is_err());
assert!(open_url("file://192.168.1.1/share/file").is_err());
}
#[test]
fn test_error_messages() {
let err = open_url("https://example.com & malware").unwrap_err();
assert!(err.to_string().contains("dangerous") || err.to_string().contains("character"));
}