first commit
This commit is contained in:
commit
cce9a8c9ba
73 changed files with 8665 additions and 0 deletions
87
backend/tests/test_company_dns.py
Normal file
87
backend/tests/test_company_dns.py
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
"""Tests for company shared-MX DNS onboarding."""
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from app.services.dns_verification import verify_company_dns
|
||||
from app.services.domain_provisioning import (
|
||||
build_company_dns_records,
|
||||
build_shared_mx_spf_value,
|
||||
register_relay_domain,
|
||||
)
|
||||
|
||||
|
||||
def test_build_company_dns_records_use_shared_mx_and_spf_include():
|
||||
records = build_company_dns_records(
|
||||
"acme.com",
|
||||
"mail.getall.help",
|
||||
"agmail",
|
||||
"abc123public",
|
||||
"_spf.getall.help",
|
||||
)
|
||||
purposes = [record["purpose"] for record in records]
|
||||
assert purposes == ["mx", "spf", "dkim", "dmarc"]
|
||||
|
||||
mx = next(record for record in records if record["purpose"] == "mx")
|
||||
spf = next(record for record in records if record["purpose"] == "spf")
|
||||
dkim = next(record for record in records if record["purpose"] == "dkim")
|
||||
|
||||
assert mx["host"] == "@"
|
||||
assert mx["value"] == "mail.getall.help"
|
||||
assert mx["priority"] == 10
|
||||
assert spf["value"] == "v=spf1 include:_spf.getall.help ~all"
|
||||
assert dkim["host"] == "agmail._domainkey"
|
||||
assert "abc123public" in dkim["value"]
|
||||
assert not any(record.get("purpose") == "mail_host" for record in records)
|
||||
|
||||
|
||||
def test_build_shared_mx_spf_value():
|
||||
assert build_shared_mx_spf_value("_spf.getall.help") == (
|
||||
"v=spf1 include:_spf.getall.help ~all"
|
||||
)
|
||||
|
||||
|
||||
def test_register_relay_domain_appends_once(tmp_path, monkeypatch):
|
||||
relay_file = tmp_path / "domains.list"
|
||||
monkeypatch.setenv("RELAY_DOMAINS_FILE", str(relay_file))
|
||||
|
||||
from app.config import get_settings
|
||||
|
||||
get_settings.cache_clear()
|
||||
|
||||
register_relay_domain("Acme.COM")
|
||||
register_relay_domain("acme.com")
|
||||
|
||||
assert relay_file.read_text(encoding="utf-8") == "acme.com\n"
|
||||
|
||||
get_settings.cache_clear()
|
||||
|
||||
|
||||
@patch("app.services.dns_verification._lookup_a")
|
||||
@patch("app.services.dns_verification._lookup_mx")
|
||||
@patch("app.services.dns_verification._lookup_txt")
|
||||
def test_verify_company_dns_all_pass(mock_txt, mock_mx, mock_a):
|
||||
mock_mx.return_value = [(10, "mail.getall.help")]
|
||||
mock_a.return_value = ["38.180.106.242"]
|
||||
mock_txt.side_effect = lambda name: {
|
||||
"acme.com": ['v=spf1 include:_spf.getall.help ~all'],
|
||||
"_spf.getall.help": ["v=spf1 ip4:38.180.106.242 ~all"],
|
||||
"agmail._domainkey.acme.com": ["v=DKIM1; k=rsa; p=abc123"],
|
||||
"_dmarc.acme.com": ["v=DMARC1; p=quarantine; rua=mailto:dmarc@acme.com"],
|
||||
}.get(name, [])
|
||||
|
||||
checks = verify_company_dns(
|
||||
domain_name="acme.com",
|
||||
shared_mail_host="mail.getall.help",
|
||||
dkim_selector="agmail",
|
||||
dkim_public_key="abc123",
|
||||
platform_spf_include="_spf.getall.help",
|
||||
)
|
||||
|
||||
assert all(check["verified"] for check in checks)
|
||||
assert [check["purpose"] for check in checks] == [
|
||||
"mx",
|
||||
"spf",
|
||||
"platform_spf",
|
||||
"dkim",
|
||||
"dmarc",
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue