use std::ffi::OsStr;
use qubit_redact::RedactionPolicy;
use qubit_redact::Redactor;
use qubit_redact::formats::argv::ArgvItem;
#[test]
fn test_text_composer_composes_policy_classified_fields_and_formats() {
let policy = RedactionPolicy::builder()
.fields(|fields| {
let _ = fields.secret_sensitive("password");
})
.expect("field policy draft should build")
.build()
.expect("policy should build");
let redactor = Redactor::new(policy);
let first = redactor
.text_composer()
.literal("request password=")
.field("password", "super-secret")
.literal(" argv=")
.argv(|argv| {
argv.items([ArgvItem::plain(OsStr::new("client"))]);
})
.finish();
assert_eq!(first.text().as_str(), "request password=<redacted> argv=[\"client\"]");
assert!(!first.text().as_str().contains("super-secret"));
let second = redactor.text_composer().field("password", "second-secret").finish();
assert_eq!(second.text().as_str(), "<redacted>");
assert!(!second.text().as_str().contains("second-secret"));
}