// node --test examples/*/*.test.mjs
import assert from 'node:assert/strict'
import { test } from 'node:test'
import { fqdn, plan, toResponse, txtName, txtPlan } from './serve.js'
const target = 'did-key-zabc.xrpc.fedproxy.com'
test('fqdn: @ is the apex', () => {
assert.equal(fqdn('@', 'mush.at'), 'mush.at')
assert.equal(fqdn('hello', 'mush.at'), 'hello.mush.at')
})
test('plan: everything else at the name goes, other names stay', () => {
const zone = [
{ name: '@', recordType: 'A', value: '97.115.166.21' },
{ name: '*', recordType: 'A', value: '97.115.166.21' },
{ name: '@', recordType: 'TXT', value: 'x' },
]
assert.deepEqual(plan(zone, '@', target), { remove: [zone[0], zone[2]], create: true })
assert.deepEqual(plan(zone, 'hello', target), { remove: [], create: true })
})
test('plan: the CNAME already there is kept, an old one replaced', () => {
const ours = { name: '@', recordType: 'CNAME', value: target }
const old = { name: '@', recordType: 'CNAME', value: 'did-key-zold.xrpc.fedproxy.com' }
assert.deepEqual(plan([ours], '@', target), { remove: [], create: false })
assert.deepEqual(plan([old], '@', target), { remove: [old], create: true })
})
test('toResponse: string, response object, JSON, failures', () => {
assert.deepEqual(toResponse({ result: { value: 'hello world' } }), { status: 200, body: 'hello world', contentType: 'text/plain; charset=utf-8' })
assert.deepEqual(toResponse({ result: { value: { status: 404, body: 'no' } } }), { status: 404, body: 'no', contentType: 'text/plain; charset=utf-8' })
assert.deepEqual(toResponse({ result: { value: { body: '
', contentType: 'text/html' } } }), { status: 200, body: '', contentType: 'text/html' })
assert.deepEqual(toResponse({ result: { value: [1] } }), { status: 200, body: [1], contentType: 'application/json' })
assert.equal(toResponse({ result: { value: null } }).status, 500)
assert.equal(toResponse({ error: 'WASM_TIMEOUT' }).body, 'handler failed: WASM_TIMEOUT')
})
test('txtPlan: _xrpc TXT holds our did:key; an older did:key there is updated, other TXT stays', () => {
const did = 'did:key:zDnaeNew'
assert.equal(txtName('@'), '_xrpc')
assert.equal(txtName('hello'), '_xrpc.hello')
const spf = { name: '_xrpc', recordType: 'TXT', value: 'v=spf1 -all' }
const old = { name: '_xrpc', recordType: 'TXT', value: 'did:key:zDnaeOld' }
const ours = { name: '_xrpc', recordType: 'TXT', value: did }
assert.deepEqual(txtPlan([spf], '_xrpc', did), { update: null, create: true })
assert.deepEqual(txtPlan([spf, old], '_xrpc', did), { update: old, create: false })
assert.deepEqual(txtPlan([old, ours], '_xrpc', did), { update: null, create: false })
assert.deepEqual(txtPlan([{ ...ours, name: '_xrpc.hello' }], '_xrpc', did), { update: null, create: true })
assert.deepEqual(plan([old], '@', 'did-key-znew.xrpc.fedproxy.com').remove, [], 'the CNAME at @ leaves _xrpc alone')
})
test('toResponse: headers pass through for the relay', () => {
assert.deepEqual(toResponse({ result: { value: { status: 302, headers: { location: '/x', 'access-control-allow-origin': '*' } } } }), {
status: 302,
body: '',
contentType: 'text/plain; charset=utf-8',
headers: { location: '/x', 'access-control-allow-origin': '*' },
})
assert.equal('headers' in toResponse({ result: { value: { body: 'x', headers: ['no'] } } }), false)
})