92 lines
No EOL
2.2 KiB
Rust
92 lines
No EOL
2.2 KiB
Rust
|
|
|
|
|
|
#![allow(unused_imports)]
|
|
#![allow(unused_variables)]
|
|
#![allow(dead_code)]
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
fn test_pattern_matching() {
|
|
let scanner = CodeScanner::new("/tmp/test");
|
|
|
|
|
|
let password_pattern = scanner
|
|
.patterns
|
|
.iter()
|
|
.find(|p| matches!(p.issue_type, IssueType::PasswordInConfig))
|
|
.unwrap();
|
|
assert!(password_pattern.regex.is_match(r#"password = "secret123""#));
|
|
assert!(password_pattern.regex.is_match(r#"PASSWORD = 'mypass'"#));
|
|
|
|
|
|
let underscore_pattern = scanner
|
|
.patterns
|
|
.iter()
|
|
.find(|p| matches!(p.issue_type, IssueType::UnderscoreInKeyword))
|
|
.unwrap();
|
|
assert!(underscore_pattern.regex.is_match("GET_BOT_MEMORY"));
|
|
assert!(underscore_pattern.regex.is_match("SET_USER_MEMORY"));
|
|
}
|
|
|
|
#[test]
|
|
|
|
|
|
fn test_severity_ordering() {
|
|
assert!(IssueSeverity::Critical > IssueSeverity::High);
|
|
assert!(IssueSeverity::High > IssueSeverity::Medium);
|
|
assert!(IssueSeverity::Medium > IssueSeverity::Low);
|
|
assert!(IssueSeverity::Low > IssueSeverity::Info);
|
|
}
|
|
|
|
#[test]
|
|
|
|
|
|
fn test_stats_merge() {
|
|
let mut stats1 = ScanStats {
|
|
critical: 1,
|
|
high: 2,
|
|
medium: 3,
|
|
low: 4,
|
|
info: 5,
|
|
total: 15,
|
|
};
|
|
|
|
let stats2 = ScanStats {
|
|
critical: 1,
|
|
high: 1,
|
|
medium: 1,
|
|
low: 1,
|
|
info: 1,
|
|
total: 5,
|
|
};
|
|
|
|
stats1.merge(&stats2);
|
|
|
|
assert_eq!(stats1.critical, 2);
|
|
assert_eq!(stats1.high, 3);
|
|
assert_eq!(stats1.total, 20);
|
|
}
|
|
|
|
#[test]
|
|
|
|
|
|
fn test_csv_escape() {
|
|
assert_eq!(escape_csv("simple"), "simple");
|
|
assert_eq!(escape_csv("with,comma"), "\"with,comma\"");
|
|
assert_eq!(escape_csv("with\"quote"), "\"with\"\"quote\"");
|
|
}
|
|
|
|
#[test]
|
|
|
|
|
|
fn test_redact_sensitive() {
|
|
let scanner = CodeScanner::new("/tmp/test");
|
|
|
|
let line = r#"password = "supersecretpassword123""#;
|
|
let redacted = scanner.redact_sensitive(line);
|
|
assert!(redacted.contains("***REDACTED***"));
|
|
assert!(!redacted.contains("supersecretpassword123"));
|
|
} |