37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from app.tlsrpt_parser import TLSRPTParseError, parse_tlsrpt_json
|
|
|
|
|
|
def test_parser_valid_tlsrpt_report():
|
|
payload = Path("tests/fixtures/sample_tlsrpt.json").read_bytes()
|
|
report = parse_tlsrpt_json(payload)
|
|
|
|
assert report.org_name == "Google Inc."
|
|
assert report.domain == "anamaka.net"
|
|
assert report.report_id == "2026-06-17T00:00:00Z_anamaka.net"
|
|
assert report.date_begin is not None
|
|
assert len(report.policies) == 1
|
|
policy = report.policies[0]
|
|
assert policy.policy_type == "sts"
|
|
assert policy.policy_domain == "anamaka.net"
|
|
assert policy.mx_hosts == ["mail.dynamicpress.org"]
|
|
assert policy.total_successful_session_count == 5
|
|
assert policy.total_failure_session_count == 0
|
|
|
|
|
|
def test_parser_rejects_missing_policy_domain():
|
|
payload = Path("tests/fixtures/sample_tlsrpt.json").read_text().replace('"policy-domain": "anamaka.net"', '"policy-domain": ""').encode()
|
|
|
|
with pytest.raises(TLSRPTParseError, match="Missing TLS policy domain"):
|
|
parse_tlsrpt_json(payload)
|
|
|
|
|
|
def test_parser_rejects_negative_session_count():
|
|
payload = Path("tests/fixtures/sample_tlsrpt.json").read_text().replace('"total-failure-session-count": 0', '"total-failure-session-count": -1').encode()
|
|
|
|
with pytest.raises(TLSRPTParseError, match="must not be negative"):
|
|
parse_tlsrpt_json(payload)
|