atproto/packages/identity/tests/handle-resolver.test.ts
Matthieu Sieben 61dc0d60e1
Add linting rule to sort imports (#3220)
* Add linting rule to sort imports

* remove spacing between import groups

* changeset

* changeset

* prettier config fine tuning

* forbid use of deprecated imports

* tidy
2025-02-05 15:06:58 +01:00

66 lines
1.9 KiB
TypeScript

import { HandleResolver } from '../src'
jest.mock('node:dns/promises', () => {
return {
resolveTxt: (handle: string) => {
if (handle === '_atproto.simple.test') {
return [['did=did:example:simpleDid']]
}
if (handle === '_atproto.noisy.test') {
return [
['blah blah blah'],
['did:example:fakeDid'],
['atproto=did:example:fakeDid'],
['did=did:example:noisyDid'],
[
'chunk long domain aspdfoiuwerpoaisdfupasodfiuaspdfoiuasdpfoiausdfpaosidfuaspodifuaspdfoiuasdpfoiasudfpasodifuaspdofiuaspdfoiuasd',
'apsodfiuweproiasudfpoasidfu',
],
]
}
if (handle === '_atproto.bad.test') {
return [
['blah blah blah'],
['did:example:fakeDid'],
['atproto=did:example:fakeDid'],
[
'chunk long domain aspdfoiuwerpoaisdfupasodfiuaspdfoiuasdpfoiausdfpaosidfuaspodifuaspdfoiuasdpfoiasudfpasodifuaspdofiuaspdfoiuasd',
'apsodfiuweproiasudfpoasidfu',
],
]
}
if (handle === '_atproto.multi.test') {
return [['did=did:example:firstDid'], ['did=did:example:secondDid']]
}
},
}
})
describe('handle resolver', () => {
let resolver: HandleResolver
beforeAll(async () => {
resolver = new HandleResolver()
})
it('handles a simple DNS resolution', async () => {
const did = await resolver.resolveDns('simple.test')
expect(did).toBe('did:example:simpleDid')
})
it('handles a noisy DNS resolution', async () => {
const did = await resolver.resolveDns('noisy.test')
expect(did).toBe('did:example:noisyDid')
})
it('handles a bad DNS resolution', async () => {
const did = await resolver.resolveDns('bad.test')
expect(did).toBeUndefined()
})
it('throws on multiple dids under same domain', async () => {
const did = await resolver.resolveDns('multi.test')
expect(did).toBeUndefined()
})
})