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());
}
}
}