66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
import { buildEmailDnsRecords } from '../ts/email/index.js';
|
|
|
|
tap.test('buildEmailDnsRecords uses the configured mail hostname for MX and includes DKIM when provided', async () => {
|
|
const records = buildEmailDnsRecords({
|
|
domain: 'example.com',
|
|
hostname: 'mail.example.com',
|
|
selector: 'selector1',
|
|
dkimValue: 'v=DKIM1; h=sha256; k=rsa; p=abc123',
|
|
statuses: {
|
|
mx: 'valid',
|
|
spf: 'missing',
|
|
dkim: 'valid',
|
|
dmarc: 'unchecked',
|
|
},
|
|
});
|
|
|
|
expect(records).toEqual([
|
|
{
|
|
type: 'MX',
|
|
name: 'example.com',
|
|
value: '10 mail.example.com',
|
|
status: 'valid',
|
|
},
|
|
{
|
|
type: 'TXT',
|
|
name: 'example.com',
|
|
value: 'v=spf1 a mx ~all',
|
|
status: 'missing',
|
|
},
|
|
{
|
|
type: 'TXT',
|
|
name: 'selector1._domainkey.example.com',
|
|
value: 'v=DKIM1; h=sha256; k=rsa; p=abc123',
|
|
status: 'valid',
|
|
},
|
|
{
|
|
type: 'TXT',
|
|
name: '_dmarc.example.com',
|
|
value: 'v=DMARC1; p=none; rua=mailto:dmarc@example.com',
|
|
status: 'unchecked',
|
|
},
|
|
]);
|
|
});
|
|
|
|
tap.test('buildEmailDnsRecords omits DKIM when no value is provided', async () => {
|
|
const records = buildEmailDnsRecords({
|
|
domain: 'example.net',
|
|
hostname: 'smtp.example.net',
|
|
mxPriority: 20,
|
|
});
|
|
|
|
expect(records.map((record) => record.name)).toEqual([
|
|
'example.net',
|
|
'example.net',
|
|
'_dmarc.example.net',
|
|
]);
|
|
expect(records[0].value).toEqual('20 smtp.example.net');
|
|
});
|
|
|
|
tap.test('cleanup', async () => {
|
|
await tap.stopForcefully();
|
|
});
|
|
|
|
export default tap.start();
|