use crate::utils::sanitize::redact_secrets;
const SHAPED: &str = "8478243969:AAEbZSu8-VGp8opQIsxxFAKEfakeFAKE0000000";
#[test]
fn a_double_quoted_secret_is_redacted() {
let out = redact_secrets(&format!("TOKEN=\"{SHAPED}\""));
assert!(!out.contains(SHAPED), "quoted secret survived: {out}");
}
#[test]
fn a_single_quoted_secret_is_redacted() {
let out = redact_secrets(&format!("TOKEN='{SHAPED}'"));
assert!(!out.contains(SHAPED), "quoted secret survived: {out}");
}
#[test]
fn the_unquoted_form_still_works() {
let out = redact_secrets(&format!("TOKEN={SHAPED} rest"));
assert!(!out.contains(SHAPED), "unquoted secret survived: {out}");
}
#[test]
fn a_space_inside_quotes_does_not_cut_the_redaction_short() {
let out = redact_secrets("PASSWORD=\"two words here\"");
assert!(!out.contains("two words here"), "tail leaked: {out}");
}
#[test]
fn the_token_shape_is_caught_without_any_prefix() {
let out = redact_secrets(&format!("the value is {SHAPED} apparently"));
assert!(!out.contains(SHAPED), "bare token shape survived: {out}");
}
#[test]
fn a_bare_sensitive_name_is_covered() {
for name in ["TOKEN", "SECRET", "PASSWORD", "APIKEY"] {
let out = redact_secrets(&format!("{name}=\"{SHAPED}\""));
assert!(
!out.contains(SHAPED),
"{name} left the value exposed: {out}"
);
}
}
#[test]
fn a_suffixed_name_still_works() {
let out = redact_secrets(&format!("BOT_TOKEN=\"{SHAPED}\""));
assert!(!out.contains(SHAPED), "suffixed name regressed: {out}");
}
#[test]
fn ordinary_text_is_not_redacted() {
let text = "ratio=3:4 and time=12:30 with key=value in a sentence";
let out = redact_secrets(text);
assert!(
out.contains("3:4"),
"harmless colon pair was redacted: {out}"
);
assert!(out.contains("12:30"), "a timestamp was redacted: {out}");
}
#[test]
fn a_url_path_segment_is_left_alone() {
let text = "https://example.com/v1/8478243969/status";
assert!(redact_secrets(text).contains("8478243969"));
}