pub trait SensitivityScanner: Send + Sync {
fn scan(&self, text: &str) -> Option<String>;
}
#[cfg(test)]
mod tests {
use super::*;
struct MockScanner;
impl SensitivityScanner for MockScanner {
fn scan(&self, text: &str) -> Option<String> {
if text.contains("SECRET") {
Some("Test Secret".to_string())
} else {
None
}
}
}
#[test]
fn scanner_detects_sensitive_content() {
let scanner = MockScanner;
assert_eq!(
scanner.scan("Contains SECRET data"),
Some("Test Secret".to_string())
);
}
#[test]
fn scanner_passes_safe_content() {
let scanner = MockScanner;
assert!(scanner.scan("This is totally safe").is_none());
}
}