@@ -43,18 +43,24 @@ pub struct EcrScanEventDetailType {
43
43
#[ derive( Debug , Clone , Eq , PartialEq , Deserialize , Serialize ) ]
44
44
#[ serde( rename_all = "camelCase" ) ]
45
45
pub struct EcrScanEventFindingSeverityCounts {
46
+ #[ serde( default ) ]
46
47
#[ serde( rename = "CRITICAL" ) ]
47
- pub critical : i64 ,
48
+ pub critical : Option < i64 > ,
49
+ #[ serde( default ) ]
48
50
#[ serde( rename = "HIGH" ) ]
49
- pub high : i64 ,
51
+ pub high : Option < i64 > ,
52
+ #[ serde( default ) ]
50
53
#[ serde( rename = "MEDIUM" ) ]
51
- pub medium : i64 ,
54
+ pub medium : Option < i64 > ,
55
+ #[ serde( default ) ]
52
56
#[ serde( rename = "LOW" ) ]
53
- pub low : i64 ,
57
+ pub low : Option < i64 > ,
58
+ #[ serde( default ) ]
54
59
#[ serde( rename = "INFORMATIONAL" ) ]
55
- pub informational : i64 ,
60
+ pub informational : Option < i64 > ,
61
+ #[ serde( default ) ]
56
62
#[ serde( rename = "UNDEFINED" ) ]
57
- pub undefined : i64 ,
63
+ pub undefined : Option < i64 > ,
58
64
}
59
65
60
66
#[ cfg( test) ]
@@ -70,4 +76,14 @@ mod test {
70
76
let reparsed: EcrScanEvent = serde_json:: from_slice ( output. as_bytes ( ) ) . unwrap ( ) ;
71
77
assert_eq ! ( parsed, reparsed) ;
72
78
}
79
+
80
+ #[ test]
81
+ #[ cfg( feature = "ecr_scan" ) ]
82
+ fn example_ecr_image_scan_event_with_missing_severities ( ) {
83
+ let data = include_bytes ! ( "../../fixtures/example-ecr-image-scan-event-with-missing-severities.json" ) ;
84
+ let parsed: EcrScanEvent = serde_json:: from_slice ( data) . unwrap ( ) ;
85
+ let output: String = serde_json:: to_string ( & parsed) . unwrap ( ) ;
86
+ let reparsed: EcrScanEvent = serde_json:: from_slice ( output. as_bytes ( ) ) . unwrap ( ) ;
87
+ assert_eq ! ( parsed, reparsed) ;
88
+ }
73
89
}
0 commit comments