From 5c8c6afea60c63e6e71c51da5dd67896c2a81d53 Mon Sep 17 00:00:00 2001 From: Dirk McCormick Date: Fri, 12 Apr 2019 15:53:17 +0800 Subject: [PATCH] test: add async/await tests --- src/listener.js | 2 +- test/{ => adapter}/connection-wrap.spec.js | 2 +- test/adapter/connection.spec.js | 111 ++++++++ test/adapter/listen-dial.spec.js | 259 +++++++++++++++++++ test/connection.spec.js | 110 ++------ test/listen-dial.spec.js | 280 ++++++++++----------- 6 files changed, 529 insertions(+), 235 deletions(-) rename test/{ => adapter}/connection-wrap.spec.js (98%) create mode 100644 test/adapter/connection.spec.js create mode 100644 test/adapter/listen-dial.spec.js diff --git a/src/listener.js b/src/listener.js index 672ac9a..b7764b9 100644 --- a/src/listener.js +++ b/src/listener.js @@ -33,7 +33,7 @@ module.exports = (handler) => { log('new connection', addr.toString()) - const s = new Libp2pSocket(socket) + const s = new Libp2pSocket(socket, addr) trackSocket(server, socket) handler && handler(s) diff --git a/test/connection-wrap.spec.js b/test/adapter/connection-wrap.spec.js similarity index 98% rename from test/connection-wrap.spec.js rename to test/adapter/connection-wrap.spec.js index 5403bae..0077417 100644 --- a/test/connection-wrap.spec.js +++ b/test/adapter/connection-wrap.spec.js @@ -6,7 +6,7 @@ const chai = require('chai') const dirtyChai = require('dirty-chai') const expect = chai.expect chai.use(dirtyChai) -const TCP = require('../src/adapter') +const TCP = require('../../src/adapter') const multiaddr = require('multiaddr') const Connection = require('interface-connection').Connection diff --git a/test/adapter/connection.spec.js b/test/adapter/connection.spec.js new file mode 100644 index 0000000..559143d --- /dev/null +++ b/test/adapter/connection.spec.js @@ -0,0 +1,111 @@ +/* eslint-env mocha */ +'use strict' + +const pull = require('pull-stream') +const chai = require('chai') +const dirtyChai = require('dirty-chai') +const expect = chai.expect +chai.use(dirtyChai) +const TCP = require('../../src/adapter') +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', (done) => { + let dialerObsAddrs + + const listener = tcp.createListener((conn) => { + expect(conn).to.exist() + conn.getObservedAddrs((err, addrs) => { + expect(err).to.not.exist() + dialerObsAddrs = addrs + pull(pull.empty(), conn) + }) + }) + + listener.listen(ma, () => { + const conn = tcp.dial(ma) + pull( + conn, + pull.onEnd(endHandler) + ) + + function endHandler () { + conn.getObservedAddrs((err, addrs) => { + expect(err).to.not.exist() + pull(pull.empty(), conn) + closeAndAssert(listener, addrs) + }) + } + + function closeAndAssert (listener, addrs) { + listener.close(() => { + expect(addrs[0]).to.deep.equal(ma) + expect(dialerObsAddrs.length).to.equal(1) + done() + }) + } + }) + }) + + it('get Peer Info', (done) => { + const listener = tcp.createListener((conn) => { + expect(conn).to.exist() + conn.getPeerInfo((err, peerInfo) => { + expect(err).to.exist() + expect(peerInfo).to.not.exist() + pull(pull.empty(), conn) + }) + }) + + listener.listen(ma, () => { + const conn = tcp.dial(ma) + + pull(conn, pull.onEnd(endHandler)) + + function endHandler () { + conn.getPeerInfo((err, peerInfo) => { + expect(err).to.exist() + expect(peerInfo).to.not.exist() + + listener.close(done) + }) + } + }) + }) + + it('set Peer Info', (done) => { + const listener = tcp.createListener((conn) => { + expect(conn).to.exist() + conn.setPeerInfo('batatas') + conn.getPeerInfo((err, peerInfo) => { + expect(err).to.not.exist() + expect(peerInfo).to.equal('batatas') + pull(pull.empty(), conn) + }) + }) + + listener.listen(ma, () => { + const conn = tcp.dial(ma) + + pull(conn, pull.onEnd(endHandler)) + + function endHandler () { + conn.setPeerInfo('arroz') + conn.getPeerInfo((err, peerInfo) => { + expect(err).to.not.exist() + expect(peerInfo).to.equal('arroz') + + listener.close(done) + }) + } + }) + }) +}) diff --git a/test/adapter/listen-dial.spec.js b/test/adapter/listen-dial.spec.js new file mode 100644 index 0000000..97e6980 --- /dev/null +++ b/test/adapter/listen-dial.spec.js @@ -0,0 +1,259 @@ +/* eslint-env mocha */ +'use strict' + +const pull = require('pull-stream') +const chai = require('chai') +const dirtyChai = require('dirty-chai') +const expect = chai.expect +chai.use(dirtyChai) +const TCP = require('../../src/adapter') +const net = require('net') +const multiaddr = require('multiaddr') +const isCI = process.env.CI + +describe('listen', () => { + let tcp + + beforeEach(() => { + tcp = new TCP() + }) + + it('close listener with connections, through timeout', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') + const listener = tcp.createListener((conn) => { + pull(conn, conn) + }) + + listener.listen(mh, () => { + const socket1 = net.connect(9090) + const socket2 = net.connect(9090) + + socket1.write('Some data that is never handled') + socket1.end() + socket1.on('error', () => {}) + socket2.on('error', () => {}) + socket1.on('connect', () => { + listener.close(done) + }) + }) + }) + + it('listen on port 0', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/0') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.close(done) + }) + }) + + it('listen on IPv6 addr', (done) => { + if (isCI) { return done() } + const mh = multiaddr('/ip6/::/tcp/9090') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.close(done) + }) + }) + + it('listen on any Interface', (done) => { + const mh = multiaddr('/ip4/0.0.0.0/tcp/9090') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.close(done) + }) + }) + + it('getAddrs', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/9090') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length).to.equal(1) + expect(multiaddrs[0]).to.deep.equal(mh) + listener.close(done) + }) + }) + }) + + it('getAddrs on port 0 listen', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/0') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length).to.equal(1) + listener.close(done) + }) + }) + }) + + it('getAddrs from listening on 0.0.0.0', (done) => { + const mh = multiaddr('/ip4/0.0.0.0/tcp/9090') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length > 0).to.equal(true) + expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) + listener.close(done) + }) + }) + }) + + it('getAddrs from listening on 0.0.0.0 and port 0', (done) => { + const mh = multiaddr('/ip4/0.0.0.0/tcp/0') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length > 0).to.equal(true) + expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) + listener.close(done) + }) + }) + }) + + it('getAddrs preserves IPFS Id', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') + const listener = tcp.createListener((conn) => {}) + listener.listen(mh, () => { + listener.getAddrs((err, multiaddrs) => { + expect(err).to.not.exist() + expect(multiaddrs.length).to.equal(1) + expect(multiaddrs[0]).to.deep.equal(mh) + listener.close(done) + }) + }) + }) +}) + +describe('dial', () => { + let tcp + let listener + const ma = multiaddr('/ip4/127.0.0.1/tcp/9090') + + beforeEach((done) => { + tcp = new TCP() + listener = tcp.createListener((conn) => { + pull( + conn, + pull.map((x) => Buffer.from(x.toString() + '!')), + conn + ) + }) + listener.listen(ma, done) + }) + + afterEach((done) => { + listener.close(done) + }) + + it('dial on IPv4', (done) => { + pull( + pull.values(['hey']), + tcp.dial(ma), + pull.collect((err, values) => { + expect(err).to.not.exist() + expect(values).to.eql([Buffer.from('hey!')]) + done() + }) + ) + }) + + it('dial to non existent listener', (done) => { + const ma = multiaddr('/ip4/127.0.0.1/tcp/8989') + pull( + tcp.dial(ma), + pull.onEnd((err) => { + expect(err).to.exist() + done() + }) + ) + }) + + it('dial on IPv6', (done) => { + if (isCI) { return done() } + + const ma = multiaddr('/ip6/::/tcp/9066') + const listener = tcp.createListener((conn) => { + pull(conn, conn) + }) + listener.listen(ma, () => { + pull( + pull.values(['hey']), + tcp.dial(ma), + pull.collect((err, values) => { + expect(err).to.not.exist() + + expect(values).to.be.eql([Buffer.from('hey')]) + + listener.close(done) + }) + ) + }) + }) + + it('dial and destroy on listener', (done) => { + let count = 0 + const closed = () => ++count === 2 ? finish() : null + + const ma = multiaddr('/ip6/::/tcp/9067') + + const listener = tcp.createListener((conn) => { + pull( + pull.empty(), + conn, + pull.onEnd(closed) + ) + }) + + listener.listen(ma, () => { + pull(tcp.dial(ma), pull.onEnd(closed)) + }) + + function finish () { + listener.close(done) + } + }) + + it('dial and destroy on dialer', (done) => { + if (isCI) { return done() } + + let count = 0 + const destroyed = () => ++count === 2 ? finish() : null + + const ma = multiaddr('/ip6/::/tcp/9068') + + const listener = tcp.createListener((conn) => { + pull(conn, pull.onEnd(destroyed)) + }) + + listener.listen(ma, () => { + pull( + pull.empty(), + tcp.dial(ma), + pull.onEnd(destroyed) + ) + }) + + function finish () { + listener.close(done) + } + }) + + it('dial on IPv4 with IPFS Id', (done) => { + const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') + const conn = tcp.dial(ma) + + pull( + pull.values(['hey']), + conn, + pull.collect((err, res) => { + expect(err).to.not.exist() + expect(res).to.be.eql([Buffer.from('hey!')]) + done() + }) + ) + }) +}) diff --git a/test/connection.spec.js b/test/connection.spec.js index bef1964..4d8f385 100644 --- a/test/connection.spec.js +++ b/test/connection.spec.js @@ -1,12 +1,11 @@ /* eslint-env mocha */ 'use strict' -const pull = require('pull-stream') const chai = require('chai') const dirtyChai = require('dirty-chai') const expect = chai.expect chai.use(dirtyChai) -const TCP = require('../src/adapter') +const TCP = require('../src') const multiaddr = require('multiaddr') describe('valid Connection', () => { @@ -18,94 +17,39 @@ describe('valid Connection', () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/9090') - it('get observed addrs', (done) => { - let dialerObsAddrs + 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 listener = tcp.createListener((conn) => { + const handler = async (conn) => { expect(conn).to.exist() - conn.getObservedAddrs((err, addrs) => { - expect(err).to.not.exist() - dialerObsAddrs = addrs - pull(pull.empty(), conn) - }) - }) + const dialerObsAddrs = await conn.getObservedAddrs() + handled(dialerObsAddrs) + } - listener.listen(ma, () => { - const conn = tcp.dial(ma) - pull( - conn, - pull.onEnd(endHandler) - ) + // Create a listener with the handler + const listener = tcp.createListener(handler) - function endHandler () { - conn.getObservedAddrs((err, addrs) => { - expect(err).to.not.exist() - pull(pull.empty(), conn) - closeAndAssert(listener, addrs) - }) - } + // Listen on the multi-address + await listener.listen(ma) - function closeAndAssert (listener, addrs) { - listener.close(() => { - expect(addrs[0]).to.deep.equal(ma) - expect(dialerObsAddrs.length).to.equal(1) - done() - }) - } - }) - }) + // Dial to that same address + const conn = await tcp.dial(ma) + const addrs = await conn.getObservedAddrs() - it('get Peer Info', (done) => { - const listener = tcp.createListener((conn) => { - expect(conn).to.exist() - conn.getPeerInfo((err, peerInfo) => { - expect(err).to.exist() - expect(peerInfo).to.not.exist() - pull(pull.empty(), conn) - }) - }) + // Wait for the incoming dial to be handled + const dialerObsAddrs = await handlerPromise - listener.listen(ma, () => { - const conn = tcp.dial(ma) + // Close the listener + await listener.close() - pull(conn, pull.onEnd(endHandler)) - - function endHandler () { - conn.getPeerInfo((err, peerInfo) => { - expect(err).to.exist() - expect(peerInfo).to.not.exist() - - listener.close(done) - }) - } - }) - }) - - it('set Peer Info', (done) => { - const listener = tcp.createListener((conn) => { - expect(conn).to.exist() - conn.setPeerInfo('batatas') - conn.getPeerInfo((err, peerInfo) => { - expect(err).to.not.exist() - expect(peerInfo).to.equal('batatas') - pull(pull.empty(), conn) - }) - }) - - listener.listen(ma, () => { - const conn = tcp.dial(ma) - - pull(conn, pull.onEnd(endHandler)) - - function endHandler () { - conn.setPeerInfo('arroz') - conn.getPeerInfo((err, peerInfo) => { - expect(err).to.not.exist() - expect(peerInfo).to.equal('arroz') - - listener.close(done) - }) - } - }) + // 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() }) }) diff --git a/test/listen-dial.spec.js b/test/listen-dial.spec.js index 7b7bf4c..e14e759 100644 --- a/test/listen-dial.spec.js +++ b/test/listen-dial.spec.js @@ -1,14 +1,16 @@ /* eslint-env mocha */ 'use strict' -const pull = require('pull-stream') const chai = require('chai') const dirtyChai = require('dirty-chai') const expect = chai.expect chai.use(dirtyChai) -const TCP = require('../src/adapter') + +const TCP = require('../src') const net = require('net') const multiaddr = require('multiaddr') +const pipe = require('it-pipe') +const { collect, map } = require('streaming-iterables') const isCI = process.env.CI describe('listen', () => { @@ -18,113 +20,111 @@ describe('listen', () => { tcp = new TCP() }) - it('close listener with connections, through timeout', (done) => { + it('close listener with connections, through timeout', async () => { const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') const listener = tcp.createListener((conn) => { - pull(conn, conn) + pipe(conn, conn) }) - listener.listen(mh, () => { - const socket1 = net.connect(9090) - const socket2 = net.connect(9090) + await listener.listen(mh) - socket1.write('Some data that is never handled') - socket1.end() - socket1.on('error', () => {}) - socket2.on('error', () => {}) - socket1.on('connect', () => { - listener.close(done) + const socket1 = net.connect(9090) + const socket2 = net.connect(9090) + + socket1.write('Some data that is never handled') + socket1.end() + socket1.on('error', () => {}) + socket2.on('error', () => {}) + + await new Promise((resolve) => { + socket1.on('connect', async () => { + await listener.close() + resolve() }) }) }) - it('listen on port 0', (done) => { + it('listen on port 0', async () => { const mh = multiaddr('/ip4/127.0.0.1/tcp/0') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.close(done) - }) + await listener.listen(mh) + await listener.close() }) - it('listen on IPv6 addr', (done) => { - if (isCI) { return done() } + it('listen on IPv6 addr', async () => { + if (isCI) { + return + } const mh = multiaddr('/ip6/::/tcp/9090') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.close(done) - }) + await listener.listen(mh) + await listener.close() }) - it('listen on any Interface', (done) => { + it('listen on any Interface', async () => { const mh = multiaddr('/ip4/0.0.0.0/tcp/9090') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.close(done) - }) + await listener.listen(mh) + await listener.close() }) - it('getAddrs', (done) => { + it('getAddrs', async () => { const mh = multiaddr('/ip4/127.0.0.1/tcp/9090') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.getAddrs((err, multiaddrs) => { - expect(err).to.not.exist() - expect(multiaddrs.length).to.equal(1) - expect(multiaddrs[0]).to.deep.equal(mh) - listener.close(done) - }) - }) + await listener.listen(mh) + + const multiaddrs = listener.getAddrs() + expect(multiaddrs.length).to.equal(1) + expect(multiaddrs[0]).to.deep.equal(mh) + + await listener.close() }) - it('getAddrs on port 0 listen', (done) => { + it('getAddrs on port 0 listen', async () => { const mh = multiaddr('/ip4/127.0.0.1/tcp/0') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.getAddrs((err, multiaddrs) => { - expect(err).to.not.exist() - expect(multiaddrs.length).to.equal(1) - listener.close(done) - }) - }) + await listener.listen(mh) + + const multiaddrs = listener.getAddrs() + expect(multiaddrs.length).to.equal(1) + + await listener.close() }) - it('getAddrs from listening on 0.0.0.0', (done) => { + it('getAddrs from listening on 0.0.0.0', async () => { const mh = multiaddr('/ip4/0.0.0.0/tcp/9090') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.getAddrs((err, multiaddrs) => { - expect(err).to.not.exist() - expect(multiaddrs.length > 0).to.equal(true) - expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) - listener.close(done) - }) - }) + await listener.listen(mh) + + const multiaddrs = listener.getAddrs() + expect(multiaddrs.length > 0).to.equal(true) + expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) + + await listener.close() }) - it('getAddrs from listening on 0.0.0.0 and port 0', (done) => { + it('getAddrs from listening on 0.0.0.0 and port 0', async () => { const mh = multiaddr('/ip4/0.0.0.0/tcp/0') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.getAddrs((err, multiaddrs) => { - expect(err).to.not.exist() - expect(multiaddrs.length > 0).to.equal(true) - expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) - listener.close(done) - }) - }) + await listener.listen(mh) + + const multiaddrs = listener.getAddrs() + expect(multiaddrs.length > 0).to.equal(true) + expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1) + + await listener.close() }) - it('getAddrs preserves IPFS Id', (done) => { + it('getAddrs preserves IPFS Id', async () => { const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') const listener = tcp.createListener((conn) => {}) - listener.listen(mh, () => { - listener.getAddrs((err, multiaddrs) => { - expect(err).to.not.exist() - expect(multiaddrs.length).to.equal(1) - expect(multiaddrs[0]).to.deep.equal(mh) - listener.close(done) - }) - }) + await listener.listen(mh) + + const multiaddrs = listener.getAddrs() + expect(multiaddrs.length).to.equal(1) + expect(multiaddrs[0]).to.deep.equal(mh) + + await listener.close() }) }) @@ -133,127 +133,107 @@ describe('dial', () => { let listener const ma = multiaddr('/ip4/127.0.0.1/tcp/9090') - beforeEach((done) => { + beforeEach(async () => { tcp = new TCP() listener = tcp.createListener((conn) => { - pull( + pipe( conn, - pull.map((x) => Buffer.from(x.toString() + '!')), + map((x) => Buffer.from(x.toString() + '!')), conn ) }) - listener.listen(ma, done) + await listener.listen(ma) }) - afterEach((done) => { - listener.close(done) - }) + afterEach(() => listener.close()) - it('dial on IPv4', (done) => { - pull( - pull.values(['hey']), - tcp.dial(ma), - pull.collect((err, values) => { - expect(err).to.not.exist() - expect(values).to.eql([Buffer.from('hey!')]) - done() - }) + it('dial on IPv4', async () => { + const values = await pipe( + ['hey'], + await tcp.dial(ma), + collect ) + expect(values).to.eql([Buffer.from('hey!')]) }) - it('dial to non existent listener', (done) => { - const ma = multiaddr('/ip4/127.0.0.1/tcp/8989') - pull( - tcp.dial(ma), - pull.onEnd((err) => { - expect(err).to.exist() - done() - }) - ) - }) - - it('dial on IPv6', (done) => { - if (isCI) { return done() } + it('dial on IPv6', async () => { + if (isCI) { + return + } const ma = multiaddr('/ip6/::/tcp/9066') const listener = tcp.createListener((conn) => { - pull(conn, conn) + pipe(conn, conn) }) - listener.listen(ma, () => { - pull( - pull.values(['hey']), - tcp.dial(ma), - pull.collect((err, values) => { - expect(err).to.not.exist() + await listener.listen(ma) - expect(values).to.be.eql([Buffer.from('hey')]) + const values = await pipe( + ['hey'], + await tcp.dial(ma), + collect + ) + expect(values).to.be.eql([Buffer.from('hey')]) - listener.close(done) - }) - ) - }) + await listener.close() }) - it('dial and destroy on listener', (done) => { - let count = 0 - const closed = () => ++count === 2 ? finish() : null + it('dial and destroy on listener', async () => { + let handled + const handledPromise = new Promise((resolve) => { + handled = resolve + }) const ma = multiaddr('/ip6/::/tcp/9067') - const listener = tcp.createListener((conn) => { - pull( - pull.empty(), - conn, - pull.onEnd(closed) + const listener = tcp.createListener(async (conn) => { + await pipe( + [], + conn ) + handled() }) - listener.listen(ma, () => { - pull(tcp.dial(ma), pull.onEnd(closed)) - }) + await listener.listen(ma) + await pipe(await tcp.dial(ma)) - function finish () { - listener.close(done) - } + await handledPromise + await listener.close() }) - it('dial and destroy on dialer', (done) => { - if (isCI) { return done() } + it('dial and destroy on dialer', async () => { + if (isCI) { + return + } - let count = 0 - const destroyed = () => ++count === 2 ? finish() : null + let handled + const handledPromise = new Promise((resolve) => { + handled = resolve + }) const ma = multiaddr('/ip6/::/tcp/9068') - const listener = tcp.createListener((conn) => { - pull(conn, pull.onEnd(destroyed)) + const listener = tcp.createListener(async (conn) => { + // pull(conn, pull.onEnd(destroyed)) + await pipe(conn) + handled() }) - listener.listen(ma, () => { - pull( - pull.empty(), - tcp.dial(ma), - pull.onEnd(destroyed) - ) - }) + await listener.listen(ma) + await pipe([], await tcp.dial(ma)) - function finish () { - listener.close(done) - } + await handledPromise + await listener.close() }) - it('dial on IPv4 with IPFS Id', (done) => { + it('dial on IPv4 with IPFS Id', async () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw') - const conn = tcp.dial(ma) + const conn = await tcp.dial(ma) - pull( - pull.values(['hey']), + const res = await pipe( + ['hey'], conn, - pull.collect((err, res) => { - expect(err).to.not.exist() - expect(res).to.be.eql([Buffer.from('hey!')]) - done() - }) + collect ) + expect(res).to.be.eql([Buffer.from('hey!')]) }) })