secfinding 0.3.0

Universal security finding types for vulnerability scanners.
Documentation
use secfinding::{Finding, Reportable, Severity};

#[test]
fn finding_implements_reportable() {
    let f = Finding::builder("scanner", "target", Severity::High)
        .title("Test Finding")
        .detail("Some detail here")
        .build()
        .unwrap();

    assert_eq!(f.scanner(), "scanner");
    assert_eq!(f.target(), "target");
    assert_eq!(f.severity(), Severity::High);
    assert_eq!(f.title(), "Test Finding");
    assert_eq!(f.detail(), "Some detail here");
}

#[test]
fn default_trait_methods_return_none() {
    struct MinimalFinding;

    impl Reportable for MinimalFinding {
        fn scanner(&self) -> &str {
            "min"
        }
        fn target(&self) -> &str {
            "target"
        }
        fn severity(&self) -> Severity {
            Severity::Info
        }
        fn title(&self) -> &str {
            "min"
        }
    }

    let f = MinimalFinding;
    assert!(f.detail().is_empty());
    assert!(f.location().is_none());
    assert!(f.evidence().is_empty());
    assert!(f.cve_ids().is_empty());
    assert!(f.cwe_ids().is_empty());

    assert!(f.cvss_score().is_none());
    assert!(f.exploit_hint().is_none());
    assert!(f.remediation().is_none());
    assert!(f.tags().is_empty());
}