js-libp2p-secio/test/index.spec.js

89 lines
2.0 KiB
JavaScript
Raw Normal View History

2016-05-20 21:29:53 +02:00
/* eslint-env mocha */
'use strict'
const pair = require('pull-pair/duplex')
2016-05-20 21:29:53 +02:00
const expect = require('chai').expect
2016-05-22 13:19:17 +02:00
const PeerId = require('peer-id')
const crypto = require('libp2p-crypto')
const parallel = require('run-parallel')
const series = require('run-series')
const ms = require('multistream-select')
const pull = require('pull-stream')
const Listener = ms.Listener
const Dialer = ms.Dialer
2016-05-20 21:29:53 +02:00
2016-09-07 12:22:04 +02:00
const secio = require('../src')
2016-05-20 21:29:53 +02:00
describe('libp2p-secio', () => {
2016-09-07 12:22:04 +02:00
it('exports a tag', () => {
expect(secio.tag).to.be.eql('/secio/1.0.0')
})
it('upgrades a connection', (done) => {
const p = pair()
2016-05-22 13:19:17 +02:00
const local = createSession(p[0])
const remote = createSession(p[1])
2016-05-22 13:19:17 +02:00
pull(
pull.values(['hello world']),
2016-09-07 12:22:04 +02:00
local
)
2016-05-22 13:19:17 +02:00
pull(
2016-09-07 12:22:04 +02:00
remote,
pull.collect((err, chunks) => {
2016-05-22 13:19:17 +02:00
expect(err).to.not.exist
expect(chunks).to.be.eql([new Buffer('hello world')])
done()
})
)
})
it('works over multistream', (done) => {
const p = pair()
const listener = new Listener()
const dialer = new Dialer()
let local
let remote
series([
(cb) => parallel([
(cb) => listener.handle(p[0], cb),
(cb) => dialer.handle(p[1], cb)
], cb),
(cb) => {
listener.addHandler('/banana/1.0.0', (conn) => {
2016-09-07 12:22:04 +02:00
local = createSession(conn)
pull(
local,
pull.collect((err, chunks) => {
expect(err).to.not.exist
expect(chunks).to.be.eql([new Buffer('hello world')])
done()
})
)
})
cb()
},
(cb) => dialer.select('/banana/1.0.0', (err, conn) => {
2016-09-07 12:22:04 +02:00
remote = createSession(conn)
pull(
pull.values(['hello world']),
remote
)
cb(err)
})
], (err) => {
if (err) throw err
})
2016-05-22 13:19:17 +02:00
})
2016-05-20 21:29:53 +02:00
})
function createSession (insecure) {
const key = crypto.generateKeyPair('RSA', 2048)
const id = PeerId.createFromPrivKey(key.bytes)
2016-09-07 12:22:04 +02:00
return secio.encrypt(id, key, insecure)
}