"""Tests for deployment DNS record generation.""" from app.services.domain_provisioning import ( build_deployment_dns_records, build_dns_records, build_spf_value, namecheap_host, ) def test_namecheap_host_strips_zone_suffix(): assert namecheap_host("mail.gentic.email", "gentic.email") == "mail" assert namecheap_host("@", "gentic.email") == "@" assert ( namecheap_host("agmail._domainkey.gentic.email", "gentic.email") == "agmail._domainkey" ) def test_build_dns_records_uses_namecheap_hosts_and_ip(): records = build_dns_records( "gentic.email", "mail.gentic.email", "agmail", "abc123", mail_server_ip="203.0.113.10", ) mx = next(record for record in records if record["purpose"] == "mx") a_record = next(record for record in records if record["purpose"] == "mail_host") spf = next(record for record in records if record["purpose"] == "spf") assert mx["host"] == "@" assert mx["value"] == "mail.gentic.email" assert mx["priority"] == 10 assert a_record["host"] == "mail" assert a_record["value"] == "203.0.113.10" assert spf["value"] == "v=spf1 mx a ip4:203.0.113.10 ~all" assert "amazonses" not in spf["value"] def test_build_spf_value_supports_ipv6(): assert build_spf_value("2001:db8::1") == "v=spf1 mx a ip6:2001:db8::1 ~all" def test_deployment_sections_split_inbound_and_outbound(): sections = build_deployment_dns_records( domain_name="gentic.email", mail_server_ip="203.0.113.10", dkim_selector="agmail", dkim_public_key="test-public-key", app_public_host="email.gentic.email", ) inbound_purposes = [record["purpose"] for record in sections["inbound"]] outbound_purposes = [record["purpose"] for record in sections["outbound"]] assert inbound_purposes == ["mx", "mail_host", "app_host"] assert outbound_purposes == ["platform_spf", "spf", "dkim", "dmarc"] assert "ses_outbound" not in sections app_host = next( record for record in sections["inbound"] if record["purpose"] == "app_host" ) assert app_host["host"] == "email" assert app_host["value"] == "203.0.113.10" dmarc = next( record for record in sections["outbound"] if record["purpose"] == "dmarc" ) assert dmarc["value"] == "v=DMARC1; p=quarantine; rua=mailto:dmarc@gentic.email" dkim = next( record for record in sections["outbound"] if record["purpose"] == "dkim" ) assert dkim["host"] == "agmail._domainkey" assert "test-public-key" in dkim["value"]