mirror of
https://github.com/domainaware/parsedmarc.git
synced 2026-02-17 07:03:58 +00:00
fixup and tests to extract_report() to handle documented inputs (#530)
This commit is contained in:
@@ -591,14 +591,19 @@ def extract_report(input_):
|
||||
str: The extracted text
|
||||
|
||||
"""
|
||||
def is_base64(s):
|
||||
base64_regex = re.compile(r'^[A-Za-z0-9+/=]+\Z')
|
||||
return bool(base64_regex.match(s))
|
||||
|
||||
try:
|
||||
file_object = BytesIO()
|
||||
if type(input_) is str:
|
||||
file_object = None
|
||||
if isinstance(input_, str):
|
||||
if is_base64(input_):
|
||||
try:
|
||||
file_object = BytesIO(b64decode(input_))
|
||||
except binascii.Error:
|
||||
pass
|
||||
if file_object is None:
|
||||
else:
|
||||
file_object = open(input_, "rb")
|
||||
elif type(input_) is bytes:
|
||||
file_object = BytesIO(input_)
|
||||
@@ -613,7 +618,7 @@ def extract_report(input_):
|
||||
errors='ignore')
|
||||
elif header.startswith(MAGIC_GZIP):
|
||||
report = zlib.decompress(
|
||||
file_object.getvalue(),
|
||||
file_object.read(),
|
||||
zlib.MAX_WBITS | 16).decode(errors='ignore')
|
||||
elif header.startswith(MAGIC_XML) or header.startswith(MAGIC_JSON):
|
||||
report = file_object.read().decode(errors='ignore')
|
||||
|
||||
592
samples/extract_report/changed-input.xml
Normal file
592
samples/extract_report/changed-input.xml
Normal file
@@ -0,0 +1,592 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<feedback>
|
||||
<report_metadata>
|
||||
<org_name>fred.com</org_name>
|
||||
<email>noreply-dmarc-support@google.com</email>
|
||||
<extra_contact_info>https://support.google.com/a/answer/2466580</extra_contact_info>
|
||||
<report_id>11038226378739404135</report_id>
|
||||
<date_range>
|
||||
<begin>1718236800</begin>
|
||||
<end>1718323199</end>
|
||||
</date_range>
|
||||
</report_metadata>
|
||||
<policy_published>
|
||||
<domain>example.com</domain>
|
||||
<adkim>r</adkim>
|
||||
<aspf>r</aspf>
|
||||
<p>none</p>
|
||||
<sp>none</sp>
|
||||
<pct>100</pct>
|
||||
<np>none</np>
|
||||
</policy_published>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.69</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>fail</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>2</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>gmail.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.90</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.31</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.33</source_ip>
|
||||
<count>33</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.92</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.110</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>12</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>connectivityu.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>2607:f8b0:4864:20::132</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.83</source_ip>
|
||||
<count>36</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.96</source_ip>
|
||||
<count>27</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.95</source_ip>
|
||||
<count>25</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.69</source_ip>
|
||||
<count>2252</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.94</source_ip>
|
||||
<count>46</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.88</source_ip>
|
||||
<count>37</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.55</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.93</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>23</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>rphvac.com</domain>
|
||||
<result>none</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>359</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
</feedback>
|
||||
592
samples/extract_report/nice-input.xml
Normal file
592
samples/extract_report/nice-input.xml
Normal file
@@ -0,0 +1,592 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<feedback>
|
||||
<report_metadata>
|
||||
<org_name>google.com</org_name>
|
||||
<email>noreply-dmarc-support@google.com</email>
|
||||
<extra_contact_info>https://support.google.com/a/answer/2466580</extra_contact_info>
|
||||
<report_id>11038226378739404135</report_id>
|
||||
<date_range>
|
||||
<begin>1718236800</begin>
|
||||
<end>1718323199</end>
|
||||
</date_range>
|
||||
</report_metadata>
|
||||
<policy_published>
|
||||
<domain>example.com</domain>
|
||||
<adkim>r</adkim>
|
||||
<aspf>r</aspf>
|
||||
<p>none</p>
|
||||
<sp>none</sp>
|
||||
<pct>100</pct>
|
||||
<np>none</np>
|
||||
</policy_published>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.69</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>fail</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>2</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>gmail.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.90</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.31</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.33</source_ip>
|
||||
<count>33</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.92</source_ip>
|
||||
<count>40</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.110</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>12</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>connectivityu.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>2607:f8b0:4864:20::132</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.83</source_ip>
|
||||
<count>36</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.96</source_ip>
|
||||
<count>27</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.95</source_ip>
|
||||
<count>25</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.69</source_ip>
|
||||
<count>2252</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.94</source_ip>
|
||||
<count>46</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.8.88</source_ip>
|
||||
<count>37</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.55</source_ip>
|
||||
<count>1</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>54.240.48.93</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>23</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>24</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>fail</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>awbr2rp4egb35wbg4umq4e5dcoe5kc4n</selector>
|
||||
</dkim>
|
||||
<dkim>
|
||||
<domain>amazonses.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>ug7nbtf4gccmlpwj322ax3p6ow6yfsug</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>rphvac.com</domain>
|
||||
<result>none</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
<record>
|
||||
<row>
|
||||
<source_ip>209.85.220.41</source_ip>
|
||||
<count>359</count>
|
||||
<policy_evaluated>
|
||||
<disposition>none</disposition>
|
||||
<dkim>pass</dkim>
|
||||
<spf>pass</spf>
|
||||
</policy_evaluated>
|
||||
</row>
|
||||
<identifiers>
|
||||
<header_from>example.com</header_from>
|
||||
</identifiers>
|
||||
<auth_results>
|
||||
<dkim>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
<selector>google</selector>
|
||||
</dkim>
|
||||
<spf>
|
||||
<domain>example.com</domain>
|
||||
<result>pass</result>
|
||||
</spf>
|
||||
</auth_results>
|
||||
</record>
|
||||
</feedback>
|
||||
BIN
samples/extract_report/nice-input.xml.gz
Normal file
BIN
samples/extract_report/nice-input.xml.gz
Normal file
Binary file not shown.
BIN
samples/extract_report/nice-input.xml.zip
Normal file
BIN
samples/extract_report/nice-input.xml.zip
Normal file
Binary file not shown.
77
tests.py
77
tests.py
@@ -1,13 +1,26 @@
|
||||
from __future__ import print_function, unicode_literals, absolute_import
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import os
|
||||
import unittest
|
||||
from glob import glob
|
||||
import os
|
||||
|
||||
from lxml import etree
|
||||
|
||||
import parsedmarc
|
||||
import parsedmarc.utils
|
||||
|
||||
|
||||
def minify_xml(xml_string):
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree = etree.fromstring(xml_string.encode('utf-8'), parser)
|
||||
return etree.tostring(tree, pretty_print=False).decode('utf-8')
|
||||
|
||||
def compare_xml(xml1, xml2):
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree1 = etree.fromstring(xml1.encode('utf-8'), parser)
|
||||
tree2 = etree.fromstring(xml2.encode('utf-8'), parser)
|
||||
return etree.tostring(tree1) == etree.tostring(tree2)
|
||||
|
||||
class Test(unittest.TestCase):
|
||||
def testBase64Decoding(self):
|
||||
"""Test base64 decoding"""
|
||||
@@ -26,6 +39,66 @@ class Test(unittest.TestCase):
|
||||
result = parsedmarc.utils.get_base_domain(subdomain)
|
||||
assert result == "c.akamaiedge.net"
|
||||
|
||||
def testExtractReportXMLComparator(self):
|
||||
"""Test XML comparator function"""
|
||||
print()
|
||||
xmlnice = open("samples/extract_report/nice-input.xml").read()
|
||||
print(xmlnice)
|
||||
xmlchanged = minify_xml(open("samples/extract_report/changed-input.xml").read())
|
||||
print(xmlchanged)
|
||||
self.assertTrue(compare_xml(xmlnice, xmlnice))
|
||||
self.assertTrue(compare_xml(xmlchanged, xmlchanged))
|
||||
self.assertFalse(compare_xml(xmlnice, xmlchanged))
|
||||
self.assertFalse(compare_xml(xmlchanged, xmlnice))
|
||||
print("Passed!")
|
||||
|
||||
def testExtractReportBytes(self):
|
||||
"""Test extract report function for bytes string input"""
|
||||
print()
|
||||
file = "samples/extract_report/nice-input.xml"
|
||||
with open(file, 'rb') as f:
|
||||
data = f.read()
|
||||
print("Testing {0}: " .format(file), end="")
|
||||
xmlout = parsedmarc.extract_report(data)
|
||||
xmlin = open("samples/extract_report/nice-input.xml").read()
|
||||
self.assertTrue(compare_xml(xmlout, xmlin))
|
||||
print("Passed!")
|
||||
|
||||
def testExtractReportXML(self):
|
||||
"""Test extract report function for XML input"""
|
||||
print()
|
||||
file = "samples/extract_report/nice-input.xml"
|
||||
print("Testing {0}: " .format(file), end="")
|
||||
xmlout = parsedmarc.extract_report(file)
|
||||
xmlin = open("samples/extract_report/nice-input.xml").read()
|
||||
self.assertTrue(compare_xml(xmlout, xmlin))
|
||||
print("Passed!")
|
||||
|
||||
def testExtractReportGZip(self):
|
||||
"""Test extract report function for gzip input"""
|
||||
print()
|
||||
file = "samples/extract_report/nice-input.xml.gz"
|
||||
print("Testing {0}: " .format(file), end="")
|
||||
xmlout = parsedmarc.extract_report(file)
|
||||
xmlin = open("samples/extract_report/nice-input.xml").read()
|
||||
self.assertTrue(compare_xml(xmlout, xmlin))
|
||||
print("Passed!")
|
||||
|
||||
def testExtractReportZip(self):
|
||||
"""Test extract report function for zip input"""
|
||||
print()
|
||||
file = "samples/extract_report/nice-input.xml.zip"
|
||||
print("Testing {0}: " .format(file), end="")
|
||||
xmlout = parsedmarc.extract_report(file)
|
||||
print(xmlout)
|
||||
xmlin = minify_xml(open("samples/extract_report/nice-input.xml").read())
|
||||
print(xmlin)
|
||||
self.assertTrue(compare_xml(xmlout, xmlin))
|
||||
xmlin = minify_xml(open("samples/extract_report/changed-input.xml").read())
|
||||
print(xmlin)
|
||||
self.assertFalse(compare_xml(xmlout, xmlin))
|
||||
print("Passed!")
|
||||
|
||||
def testAggregateSamples(self):
|
||||
"""Test sample aggregate/rua DMARC reports"""
|
||||
print()
|
||||
|
||||
Reference in New Issue
Block a user