use aperture_cli::logging::{get_max_body_len, redact_sensitive_value, should_redact_header};
use std::env;
#[test]
fn test_logging_environment_variables() {
let original_log = env::var("APERTURE_LOG").ok();
let original_format = env::var("APERTURE_LOG_FORMAT").ok();
let original_max_body = env::var("APERTURE_LOG_MAX_BODY").ok();
env::set_var("APERTURE_LOG", "debug");
assert_eq!(
env::var("APERTURE_LOG").ok(),
Some("debug".to_string()),
"APERTURE_LOG should be settable"
);
env::set_var("APERTURE_LOG_FORMAT", "json");
assert_eq!(
env::var("APERTURE_LOG_FORMAT").ok(),
Some("json".to_string()),
"APERTURE_LOG_FORMAT should be settable"
);
env::remove_var("APERTURE_LOG_MAX_BODY");
assert_eq!(get_max_body_len(), 1000, "Default max body should be 1000");
env::set_var("APERTURE_LOG_MAX_BODY", "2000");
assert_eq!(
get_max_body_len(),
2000,
"Custom max body value should be respected"
);
if let Some(val) = original_log {
env::set_var("APERTURE_LOG", val);
} else {
env::remove_var("APERTURE_LOG");
}
if let Some(val) = original_format {
env::set_var("APERTURE_LOG_FORMAT", val);
} else {
env::remove_var("APERTURE_LOG_FORMAT");
}
if let Some(val) = original_max_body {
env::set_var("APERTURE_LOG_MAX_BODY", val);
} else {
env::remove_var("APERTURE_LOG_MAX_BODY");
}
}
#[test]
fn test_logging_module_redaction() {
assert!(should_redact_header("Authorization"));
assert!(should_redact_header("authorization"));
assert!(should_redact_header("X-API-Key"));
assert!(should_redact_header("X-Auth-Token"));
assert!(should_redact_header("api-key"));
assert!(!should_redact_header("Content-Type"));
assert!(!should_redact_header("Content-Length"));
assert!(!should_redact_header("User-Agent"));
}
#[test]
fn test_logging_module_redaction_value() {
assert_eq!(redact_sensitive_value("secret123"), "[REDACTED]");
assert_eq!(redact_sensitive_value(""), "");
}
#[test]
fn test_cli_verbose_flag_parsing() {
let verbosity_default = 0u8;
let verbosity_v = 1u8;
let verbosity_vv = 2u8;
assert_eq!(verbosity_default, 0);
assert_eq!(verbosity_v, 1);
assert_eq!(verbosity_vv, 2);
}