aboutsummaryrefslogtreecommitdiff
path: root/src/parser/deserializer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/deserializer.rs')
-rw-r--r--src/parser/deserializer.rs92
1 files changed, 36 insertions, 56 deletions
diff --git a/src/parser/deserializer.rs b/src/parser/deserializer.rs
index 75d3c6e..e2bd108 100644
--- a/src/parser/deserializer.rs
+++ b/src/parser/deserializer.rs
@@ -2,9 +2,10 @@ 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)
+fn deserialize_dmarc_report<R: Read>(
+ reader: R,
+) -> Result<data_structures::Feedback, serde_xml_rs::Error> {
+ serde_xml_rs::from_reader(reader)
}
#[cfg(test)]
@@ -20,64 +21,43 @@ mod test {
let reader = BufReader::new(dmarc_report_file);
- let should_be = data_structures::Feedback {
- version: String::from("1.0"),
- report_metadata: data_structures::ReportMetadata {
- org_name: String::from("Enterprise Outlook"),
- email: String::from("dmarcreport@microsoft.com"),
- report_id: String::from("3374fb5148ba40c1a5cf8e3d36f34a34"),
- date_range: data_structures::DateRange {
- begin: String::from("1707436800"),
- end: String::from("1707523200"),
- },
- },
- policy_published: data_structures::PolicyPublished {
- domain: String::from("boitalett.re"),
- adkim: String::from("s"),
- aspf: String::from("s"),
- p: String::from("reject"),
- sp: String::from("reject"),
- pct: String::from("100"),
- fo: String::from("0"),
- },
- record: data_structures::Record {
- row: data_structures::Row {
- source_ip: String::from("195.154.102.43"),
- count: String::from("1"),
- policy_evaluated: data_structures::PolicyEvaluated {
- disposition: String::from("none"),
- dkim: String::from("pass"),
- spf: String::from("pass"),
- },
- },
- identifiers: data_structures::Identifiers {
- envelope_to: String::from("babilou.com"),
- envelope_from: String::from("boitalett.re"),
- header_from: String::from("boitalett.re"),
- },
- auth_results: data_structures::AuthResults {
- dkim: data_structures::DKIM {
- domain: String::from("boitalett.re"),
- selector: String::from("2023101501"),
- result: String::from("pass"),
- },
- spf: data_structures::SPF {
- domain: String::from("boitalett.re"),
- scope: String::from("mfrom"),
- result: String::from("pass"),
- },
- },
- },
- };
+ 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.report_metadata.report_id,
- should_be.report_metadata.report_id
+ report.policy_published.domain,
+ expected_policy_published_domain
);
- println!("{:?}", report);
- },
+ 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);
}