use vulnera_advisor::{MatchOptions, Severity};
fn main() {
println!("=== CWE Filtering Test ===\n");
let default_opts = MatchOptions::default();
println!("1. Default options:");
println!(" cwe_ids: {:?}", default_opts.cwe_ids);
println!(" kev_only: {}", default_opts.kev_only);
println!();
let xss_opts = MatchOptions::with_cwes(vec!["CWE-79".to_string()]);
println!("2. XSS filter (CWE-79):");
println!(" cwe_ids: {:?}", xss_opts.cwe_ids);
println!(" include_enrichment: {}", xss_opts.include_enrichment);
println!();
let injection_opts = MatchOptions::with_cwes(vec![
"CWE-79".to_string(), "CWE-89".to_string(), "CWE-78".to_string(), ]);
println!("3. Injection filter (CWE-79, CWE-89, CWE-78):");
println!(" cwe_ids: {:?}", injection_opts.cwe_ids);
println!();
let critical_xss = MatchOptions {
cwe_ids: Some(vec!["CWE-79".to_string()]),
min_severity: Some(Severity::High),
kev_only: true,
include_enrichment: true,
..Default::default()
};
println!("4. Critical XSS (High severity + KEV):");
println!(" cwe_ids: {:?}", critical_xss.cwe_ids);
println!(" min_severity: {:?}", critical_xss.min_severity);
println!(" kev_only: {}", critical_xss.kev_only);
println!();
let owasp_top10 = MatchOptions::with_cwes(vec![
"CWE-79".to_string(), "CWE-89".to_string(), "CWE-287".to_string(), "CWE-352".to_string(), "CWE-611".to_string(), "CWE-502".to_string(), ]);
println!("5. OWASP Top 10 related CWEs:");
println!(" cwe_ids: {:?}", owasp_top10.cwe_ids);
println!();
println!("=== All tests completed ===");
println!("\nTo use with VulnerabilityManager:");
println!(" let manager = VulnerabilityManager::new(config).await?;");
println!(" let options = MatchOptions::with_cwes(vec![\"CWE-79\".to_string()]);");
println!(
" let xss_vulns = manager.matches_with_options(\"npm\", \"pkg\", \"1.0.0\", &options).await?;"
);
}