// Import Node's built-in test tools. const test = require("node:test"); const assert = require("node:assert/strict"); // Import the DNS service. const { lookupDns, resolveRecord, RECORD_TYPES, } = require("../src/services/dnsService"); test("supports the expected DNS record types", () => { assert.deepEqual( RECORD_TYPES, ["A", "AAAA", "CNAME", "MX", "TXT", "NS"] ); }); test("resolves A records for example.com", async () => { const records = await resolveRecord("example.com", "A"); assert.equal(Array.isArray(records), true); assert.equal(records.length > 0, true); }); test("returns an array for a missing optional record type", async () => { const records = await resolveRecord( "example.com", "CNAME" ); assert.equal(Array.isArray(records), true); }); test("joins TXT record fragments into strings", async () => { const records = await resolveRecord("google.com", "TXT"); assert.equal(Array.isArray(records), true); records.forEach((record) => { assert.equal(typeof record, "string"); }); }); test("returns all supported record groups", async () => { const result = await lookupDns("example.com"); assert.equal(result.hostname, "example.com"); assert.equal(typeof result.checkedAt, "string"); assert.equal(typeof result.records, "object"); RECORD_TYPES.forEach((recordType) => { assert.equal( Array.isArray(result.records[recordType]), true ); }); }); test("returns a valid ISO timestamp", async () => { const result = await lookupDns("example.com"); const timestamp = Date.parse(result.checkedAt); assert.equal(Number.isNaN(timestamp), false); });