moon-did-resolver
Version:
Resolve DID documents for ethereum addresses and public keys
244 lines (232 loc) • 8.84 kB
text/typescript
import { Resolver } from 'did-resolver'
import { getResolver } from '../resolver'
import { interpretIdentifier } from '../helpers'
jest.setTimeout(30000)
describe('moonResolver (alt-chains)', () => {
// const addr = '0xd0dbe9d3698738f899ccd8ee27ff2347a7faa4dd'
const addr = '0x35252b703078f9E9E96ffbC739372fE5eF6aebAF'
const { address } = interpretIdentifier(addr)
const checksumAddr = address
describe('moon-networks', () => {
// it('resolves on mainnet with versionId', async () => {
// const resolver = new Resolver(
// getResolver({
// infuraProjectId: '6b734e0b04454df8a6ce234023c04f26',
// })
// )
// const result = await resolver.resolve('did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388?versionId=12090174')
// expect(result).toEqual({
// didDocumentMetadata: {
// nextVersionId: '12090175',
// nextUpdate: '2021-03-22T18:14:29Z',
// },
// didResolutionMetadata: {
// contentType: 'application/did+ld+json',
// },
// didDocument: {
// '@context': expect.anything(),
// id: 'did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388',
// verificationMethod: [
// {
// id: 'did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388#controller',
// type: 'EcdsaSecp256k1RecoveryMethod2020',
// controller: 'did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388',
// blockchainAccountId: 'eip155:1:0x26bF14321004e770E7A8b080b7a526d8eed8b388',
// },
// ],
// authentication: ['did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388#controller'],
// assertionMethod: ['did:ethr:0x26bf14321004e770e7a8b080b7a526d8eed8b388#controller'],
// },
// })
// })
it('resolves on alpha when configured', async () => {
const did = 'did:moon:alpha:' + addr
const moon = getResolver({
networks: [
{
name: 'alpha',
chainId: 1287,
registry: '0x1205411db2cC925253A57299f3313075DDD48439',
rpcUrl: 'https://rpc.api.moonbase.moonbeam.network',
},
],
})
const resolver = new Resolver(moon)
const result = await resolver.resolve(did)
console.log(result)
expect(result).toEqual({
didDocumentMetadata: {},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: `eip155:1287:${checksumAddr}`,
},
],
authentication: [`${did}#controller`],
assertionMethod: [`${did}#controller`],
},
})
})
it.only('resolves on mainnet when configured', async () => {
const did = 'did:moon:' + addr
const moon = getResolver({
networks: [
{
name: 'mainnet',
rpcUrl: 'https://moonbeam.public.blastapi.io',
},
],
})
const resolver = new Resolver(moon)
const result = await resolver.resolve(did)
console.log(result)
expect(result).toEqual({
didDocumentMetadata: {},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: `eip155:1284:${checksumAddr}`,
},
],
authentication: [`${did}#controller`],
assertionMethod: [`${did}#controller`],
},
transactionHashes: expect.any(Array),
})
})
// socket hangup
it.skip('resolves on rsk when configured', async () => {
const did = 'did:moon:rsk:' + addr
const moon = getResolver({ networks: [{ name: 'rsk', rpcUrl: 'https://public-node.rsk.co' }] })
const resolver = new Resolver(moon)
const result = await resolver.resolve(did)
expect(result).toEqual({
didDocumentMetadata: {},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: `eip155:30:${checksumAddr}`,
},
],
authentication: [`${did}#controller`],
assertionMethod: [`${did}#controller`],
},
})
})
// socket hangup
it.skip('resolves on rsk:testnet when configured', async () => {
const did = 'did:moon:rsk:testnet:' + addr
const moon = getResolver({ networks: [{ name: 'rsk:testnet', rpcUrl: 'https://public-node.testnet.rsk.co' }] })
const resolver = new Resolver(moon)
const result = await resolver.resolve(did)
expect(result).toEqual({
didDocumentMetadata: {},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: `eip155:31:${checksumAddr}`,
},
],
authentication: [`${did}#controller`],
assertionMethod: [`${did}#controller`],
},
})
})
it.skip('resolves public key identifier on rsk when configured', async () => {
const did = 'did:moon:rsk:0x03fdd57adec3d438ea237fe46b33ee1e016eda6b585c3e27ea66686c2ea5358479'
const moon = getResolver({ networks: [{ name: 'rsk', rpcUrl: 'https://did.rsk.co:4444' }] })
const resolver = new Resolver(moon)
const doc = await resolver.resolve(did)
return expect(doc).toEqual({
didDocumentMetadata: {},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: 'eip155:30:0xF3beAC30C498D9E26865F34fCAa57dBB935b0D74',
},
{
id: `${did}#controllerKey`,
type: 'EcdsaSecp256k1VerificationKey2019',
controller: did,
publicKeyHex: '03fdd57adec3d438ea237fe46b33ee1e016eda6b585c3e27ea66686c2ea5358479',
},
],
authentication: [`${did}#controller`, `${did}#controllerKey`],
assertionMethod: [`${did}#controller`, `${did}#controllerKey`],
},
})
})
it('resolves public keys and services on aurora when configured', async () => {
const did = 'did:moon:aurora:0x036d148205e34a8591dcdcea34fb7fed760f5f1eca66d254830833f755ff359ef0'
const moon = getResolver({
networks: [
{
name: 'aurora',
chainId: 1313161554,
rpcUrl: 'https://mainnet.aurora.dev',
registry: '0x63eD58B671EeD12Bc1652845ba5b2CDfBff198e0',
},
],
})
const resolver = new Resolver(moon)
const doc = await resolver.resolve(did)
return expect(doc).toEqual({
didDocumentMetadata: {
updated: '2022-01-19T12:20:00Z',
versionId: '57702194',
},
didResolutionMetadata: { contentType: 'application/did+ld+json' },
didDocument: {
'@context': expect.anything(),
id: did,
verificationMethod: [
{
id: `${did}#controller`,
type: 'EcdsaSecp256k1RecoveryMethod2020',
controller: did,
blockchainAccountId: 'eip155:1313161554:0x7a988202a04f00436f73972DF4dEfD80c3A6BD13',
},
{
id: `${did}#controllerKey`,
type: 'EcdsaSecp256k1VerificationKey2019',
controller: did,
publicKeyHex: '036d148205e34a8591dcdcea34fb7fed760f5f1eca66d254830833f755ff359ef0',
},
],
authentication: [`${did}#controller`, `${did}#controllerKey`],
assertionMethod: [`${did}#controller`, `${did}#controllerKey`],
},
})
})
})
})