// The membrane's did:web document — GET /.well-known/did.json makes did:web:<host> (serverDid) resolvable,
// and advertises #bsky_fg when a feed skeleton is served here (Bare: the gateway's lens extension; see
// test/bare/extensions.test.js). The Node edition serves no extensions. Run via brittle-node.
import test from 'brittle'
import { buildMembraneDidDoc } from '../lib/did-doc.js'
import { createPdsServer } from '../lib/server.js'
const SERVER_DID = 'did:web:pds.7rnx.net'
test('buildMembraneDidDoc: #bsky_fg present iff a feed generator is served', (t) => {
const off = buildMembraneDidDoc(SERVER_DID, {})
t.is(off.id, SERVER_DID, 'doc id = serverDid')
t.alike(off.service, [], 'no services when no feed generator is served')
const on = buildMembraneDidDoc(SERVER_DID, { feedGenerator: true })
t.is(on.service.length, 1, 'one service when a feed generator is served')
t.is(on.service[0].id, '#bsky_fg', 'service id = #bsky_fg')
t.is(on.service[0].type, 'BskyFeedGenerator', 'service type = BskyFeedGenerator')
t.is(on.service[0].serviceEndpoint, 'https://pds.7rnx.net', 'endpoint = https://<serverDid host>')
t.is(buildMembraneDidDoc('did:plc:notweb', {}), null, 'non-did:web serverDid → null')
t.is(buildMembraneDidDoc(null, {}), null, 'no serverDid → null')
})
test('GET /.well-known/did.json serves the membrane did doc (Node edition: no feed generator)', async (t) => {
const server = createPdsServer({ peers: null, serverDid: SERVER_DID, availableUserDomains: ['.7rnx.net'] })
await new Promise((r) => server.listen(0, '127.0.0.1', r))
t.teardown(() => server.close())
const res = await fetch(`http://127.0.0.1:${server.address().port}/.well-known/did.json`)
t.is(res.status, 200)
const doc = await res.json()
t.is(doc.id, SERVER_DID)
t.alike(doc.service, [])
})