1
0
mirror of https://github.com/fluencelabs/js-libp2p synced 2025-03-31 14:51:05 +00:00
js-libp2p/test/core/get-public-key.spec.ts
Alex Potsides 147304449e
fix: expose getPublicKey ()
This is used externally by IPFS so expose the method
2022-04-14 18:00:21 +01:00

79 lines
2.0 KiB
TypeScript

/* eslint-env mocha */
import { expect } from 'aegir/chai'
import { WebSockets } from '@libp2p/websockets'
import { NOISE } from '@chainsafe/libp2p-noise'
import { createPeerId } from '../utils/creators/peer.js'
import { createLibp2pNode, Libp2pNode } from '../../src/libp2p.js'
import type { Libp2pOptions } from '../../src/index.js'
import sinon from 'sinon'
import { KadDHT } from '@libp2p/kad-dht'
describe('getPublicKey', () => {
let libp2p: Libp2pNode
beforeEach(async () => {
const peerId = await createPeerId()
const config: Libp2pOptions = {
peerId,
transports: [
new WebSockets()
],
connectionEncryption: [
NOISE
],
dht: new KadDHT()
}
libp2p = await createLibp2pNode(config)
await libp2p.start()
})
afterEach(async () => {
await libp2p.stop()
})
it('should extract embedded public key', async () => {
const otherPeer = await createPeerId()
const key = await libp2p.getPublicKey(otherPeer)
expect(otherPeer.publicKey).to.equalBytes(key)
})
it('should get key from the keystore', async () => {
const otherPeer = await createPeerId({ opts: { type: 'rsa' } })
if (otherPeer.publicKey == null) {
throw new Error('Public key was missing')
}
await libp2p.peerStore.keyBook.set(otherPeer, otherPeer.publicKey)
const key = await libp2p.getPublicKey(otherPeer)
expect(otherPeer.publicKey).to.equalBytes(key)
})
it('should query the DHT when the key is not in the keystore', async () => {
const otherPeer = await createPeerId({ opts: { type: 'rsa' } })
if (otherPeer.publicKey == null) {
throw new Error('Public key was missing')
}
if (libp2p.dht == null) {
throw new Error('DHT was not configured')
}
libp2p.dht.get = sinon.stub().returns([{
name: 'VALUE',
value: otherPeer.publicKey
}])
const key = await libp2p.getPublicKey(otherPeer)
expect(otherPeer.publicKey).to.equalBytes(key)
})
})