secfinding 0.3.0

Universal security finding types for vulnerability scanners.
Documentation
use proptest::prelude::*;
use secfinding::{Finding, Severity, FindingKind, FindingStatus};


proptest! {
    #[test]
    fn test_finding_serialization_symmetry(
        scanner in ".*",
        target in ".*",
        title in ".*",
        detail in ".*",
        tag in ".*",
        matched_value in ".*"
    ) {
        if let Ok(finding) = Finding::builder(&scanner, &target, Severity::High)
            .title(&title)
            .detail(&detail)
            .kind(FindingKind::Other)
            .status(FindingStatus::Open)
            .tag(&tag)
            .matched_value(&matched_value)
            .build()
        {
            let serialized = serde_json::to_string(&finding).unwrap();
            let deserialized: Finding = serde_json::from_str(&serialized).unwrap();
            
            assert_eq!(finding.scanner(), deserialized.scanner());
            assert_eq!(finding.target(), deserialized.target());
            assert_eq!(finding.title(), deserialized.title());
            assert_eq!(finding.detail(), deserialized.detail());
            assert_eq!(finding.tags(), deserialized.tags());
            assert_eq!(finding.matched_values(), deserialized.matched_values());
        }
    }
}