js-libp2p-tcp/test/connection.spec.js
2019-04-12 15:53:17 +08:00

56 lines
1.3 KiB
JavaScript

/* eslint-env mocha */
'use strict'
const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const TCP = require('../src')
const multiaddr = require('multiaddr')
describe('valid Connection', () => {
let tcp
beforeEach(() => {
tcp = new TCP()
})
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')
it('get observed addrs', async () => {
// Create a Promise that resolves when a connection is handled
let handled
const handlerPromise = new Promise((resolve) => {
handled = resolve
})
const handler = async (conn) => {
expect(conn).to.exist()
const dialerObsAddrs = await conn.getObservedAddrs()
handled(dialerObsAddrs)
}
// Create a listener with the handler
const listener = tcp.createListener(handler)
// Listen on the multi-address
await listener.listen(ma)
// Dial to that same address
const conn = await tcp.dial(ma)
const addrs = await conn.getObservedAddrs()
// Wait for the incoming dial to be handled
const dialerObsAddrs = await handlerPromise
// Close the listener
await listener.close()
// The addresses should match
expect(addrs.length).to.equal(1)
expect(addrs[0]).to.deep.equal(ma)
expect(dialerObsAddrs.length).to.equal(1)
expect(dialerObsAddrs[0]).to.exist()
})
})