blob: e2bd10833df5af8b05ec78ba68c0ee1af5e81ec9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
use std::io::Read;
use crate::data_structures;
fn deserialize_dmarc_report<R: Read>(
reader: R,
) -> Result<data_structures::Feedback, serde_xml_rs::Error> {
serde_xml_rs::from_reader(reader)
}
#[cfg(test)]
mod test {
use super::*;
use std::fs::File;
use std::io::BufReader;
#[test]
fn test_deserialize_dmarc_report() {
let dmarc_report_file = File::open("fixtures/dmarc_report_fixture.xml").unwrap();
let reader = BufReader::new(dmarc_report_file);
let expected_version = "1.0".to_string();
let expected_report_id = "3374fb5148ba40c1a5cf8e3d36f34a34".to_string();
let expected_begin_date = "1707436800".to_string();
let expected_policy_published_domain = "boitalett.re".to_string();
let expected_record_row_source_ip = "195.154.102.43".to_string();
let expected_record_row_policy_evaluated_dkim = "pass".to_string();
let expected_identifiers_envelope_to = "babilou.com".to_string();
let expected_auth_results_dkim_selector = "2023101501".to_string();
let expected_auth_results_spf_scope = "mfrom".to_string();
match deserialize_dmarc_report(reader) {
Ok(report) => {
assert_eq!(report.version, expected_version);
assert_eq!(report.report_metadata.report_id, expected_report_id);
assert_eq!(report.report_metadata.date_range.begin, expected_begin_date);
assert_eq!(
report.policy_published.domain,
expected_policy_published_domain
);
assert_eq!(report.record.row.source_ip, expected_record_row_source_ip);
assert_eq!(
report.record.row.policy_evaluated.dkim,
expected_record_row_policy_evaluated_dkim
);
assert_eq!(
report.record.identifiers.envelope_to,
expected_identifiers_envelope_to
);
assert_eq!(
report.record.auth_results.dkim.selector,
expected_auth_results_dkim_selector
);
assert_eq!(
report.record.auth_results.spf.scope,
expected_auth_results_spf_scope
);
}
Err(err) => {
panic!("{:?}", err);
}
}
}
}
|