mirror of
https://github.com/fluencelabs/js-libp2p-websockets
synced 2025-06-25 01:31:43 +00:00
fix: listener params and adapter tests
License: MIT Signed-off-by: Alan Shaw <alan.shaw@protocol.ai>
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
/* eslint-env mocha */
|
||||
'use strict'
|
||||
|
||||
const tests = require('interface-transport')
|
||||
const tests = require('./compliance')
|
||||
const multiaddr = require('multiaddr')
|
||||
const WS = require('../../src/adapter')
|
||||
|
||||
describe('compliance', () => {
|
||||
describe('adapter compliance', () => {
|
||||
tests({
|
||||
setup (callback) {
|
||||
let ws = new WS()
|
||||
|
73
test/adapter/compliance/dial-test.js
Normal file
73
test/adapter/compliance/dial-test.js
Normal file
@ -0,0 +1,73 @@
|
||||
/* eslint-env mocha */
|
||||
'use strict'
|
||||
|
||||
const chai = require('chai')
|
||||
const dirtyChai = require('dirty-chai')
|
||||
const expect = chai.expect
|
||||
chai.use(dirtyChai)
|
||||
const pull = require('pull-stream')
|
||||
const goodbye = require('pull-goodbye')
|
||||
const serializer = require('pull-serializer')
|
||||
|
||||
module.exports = (common) => {
|
||||
describe('dial', () => {
|
||||
let addrs
|
||||
let transport
|
||||
let listener
|
||||
|
||||
before((done) => {
|
||||
common.setup((err, _transport, _addrs) => {
|
||||
if (err) return done(err)
|
||||
transport = _transport
|
||||
addrs = _addrs
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
after((done) => {
|
||||
common.teardown(done)
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
listener = transport.createListener((conn) => {
|
||||
pull(conn, conn)
|
||||
})
|
||||
listener.listen(addrs[0], done)
|
||||
})
|
||||
|
||||
afterEach((done) => {
|
||||
listener.close(done)
|
||||
})
|
||||
|
||||
it('simple', (done) => {
|
||||
const s = serializer(goodbye({
|
||||
source: pull.values(['hey']),
|
||||
sink: pull.collect((err, values) => {
|
||||
expect(err).to.not.exist()
|
||||
expect(
|
||||
values
|
||||
).to.be.eql(
|
||||
['hey']
|
||||
)
|
||||
done()
|
||||
})
|
||||
}))
|
||||
|
||||
pull(
|
||||
s,
|
||||
transport.dial(addrs[0]),
|
||||
s
|
||||
)
|
||||
})
|
||||
|
||||
it('to non existent listener', (done) => {
|
||||
pull(
|
||||
transport.dial(addrs[1]),
|
||||
pull.onEnd((err) => {
|
||||
expect(err).to.exist()
|
||||
done()
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
}
|
12
test/adapter/compliance/index.js
Normal file
12
test/adapter/compliance/index.js
Normal file
@ -0,0 +1,12 @@
|
||||
/* eslint-env mocha */
|
||||
'use strict'
|
||||
|
||||
const dial = require('./dial-test')
|
||||
const listen = require('./listen-test')
|
||||
|
||||
module.exports = (common) => {
|
||||
describe('interface-transport', () => {
|
||||
dial(common)
|
||||
listen(common)
|
||||
})
|
||||
}
|
124
test/adapter/compliance/listen-test.js
Normal file
124
test/adapter/compliance/listen-test.js
Normal file
@ -0,0 +1,124 @@
|
||||
/* eslint max-nested-callbacks: ["error", 8] */
|
||||
/* eslint-env mocha */
|
||||
'use strict'
|
||||
|
||||
const chai = require('chai')
|
||||
const dirtyChai = require('dirty-chai')
|
||||
const expect = chai.expect
|
||||
chai.use(dirtyChai)
|
||||
|
||||
const pull = require('pull-stream')
|
||||
|
||||
module.exports = (common) => {
|
||||
describe('listen', () => {
|
||||
let addrs
|
||||
let transport
|
||||
|
||||
before((done) => {
|
||||
common.setup((err, _transport, _addrs) => {
|
||||
if (err) return done(err)
|
||||
transport = _transport
|
||||
addrs = _addrs
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
after((done) => {
|
||||
common.teardown(done)
|
||||
})
|
||||
|
||||
it('simple', (done) => {
|
||||
const listener = transport.createListener((conn) => {})
|
||||
listener.listen(addrs[0], () => {
|
||||
listener.close(done)
|
||||
})
|
||||
})
|
||||
|
||||
it('close listener with connections, through timeout', (done) => {
|
||||
const finish = plan(3, done)
|
||||
const listener = transport.createListener((conn) => {
|
||||
pull(conn, conn)
|
||||
})
|
||||
|
||||
listener.listen(addrs[0], () => {
|
||||
const socket1 = transport.dial(addrs[0], () => {
|
||||
listener.close(finish)
|
||||
})
|
||||
|
||||
pull(
|
||||
transport.dial(addrs[0]),
|
||||
pull.onEnd(() => {
|
||||
finish()
|
||||
})
|
||||
)
|
||||
|
||||
pull(
|
||||
pull.values([Buffer.from('Some data that is never handled')]),
|
||||
socket1,
|
||||
pull.onEnd(() => {
|
||||
finish()
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('events', () => {
|
||||
// eslint-disable-next-line
|
||||
// TODO: figure out why it fails in the full test suite
|
||||
it.skip('connection', (done) => {
|
||||
const finish = plan(2, done)
|
||||
|
||||
const listener = transport.createListener()
|
||||
|
||||
listener.on('connection', (conn) => {
|
||||
expect(conn).to.exist()
|
||||
finish()
|
||||
})
|
||||
|
||||
listener.listen(addrs[0], () => {
|
||||
transport.dial(addrs[0], () => {
|
||||
listener.close(finish)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it('listening', (done) => {
|
||||
const listener = transport.createListener()
|
||||
listener.on('listening', () => {
|
||||
listener.close(done)
|
||||
})
|
||||
listener.listen(addrs[0])
|
||||
})
|
||||
|
||||
// eslint-disable-next-line
|
||||
// TODO: how to get the listener to emit an error?
|
||||
it.skip('error', (done) => {
|
||||
const listener = transport.createListener()
|
||||
listener.on('error', (err) => {
|
||||
expect(err).to.exist()
|
||||
listener.close(done)
|
||||
})
|
||||
})
|
||||
|
||||
it('close', (done) => {
|
||||
const finish = plan(2, done)
|
||||
const listener = transport.createListener()
|
||||
listener.on('close', finish)
|
||||
|
||||
listener.listen(addrs[0], () => {
|
||||
listener.close(finish)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function plan (n, done) {
|
||||
let i = 0
|
||||
return (err) => {
|
||||
if (err) return done(err)
|
||||
i++
|
||||
|
||||
if (i === n) done()
|
||||
}
|
||||
}
|
2
test/adapter/index.js
Normal file
2
test/adapter/index.js
Normal file
@ -0,0 +1,2 @@
|
||||
require('./compliance.node')
|
||||
require('./node')
|
@ -14,14 +14,14 @@ const WS = require('../../src/adapter')
|
||||
|
||||
require('./compliance.node')
|
||||
|
||||
describe('instantiate the transport', () => {
|
||||
describe('adapter instantiate the transport', () => {
|
||||
it('create', () => {
|
||||
const ws = new WS()
|
||||
expect(ws).to.exist()
|
||||
})
|
||||
})
|
||||
|
||||
describe('listen', () => {
|
||||
describe('adapter listen', () => {
|
||||
describe('ip4', () => {
|
||||
let ws
|
||||
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')
|
||||
@ -201,7 +201,7 @@ describe('listen', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('dial', () => {
|
||||
describe('adapter dial', () => {
|
||||
describe('ip4', () => {
|
||||
let ws
|
||||
let listener
|
||||
@ -305,7 +305,7 @@ describe('dial', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('filter addrs', () => {
|
||||
describe('adapter filter addrs', () => {
|
||||
let ws
|
||||
|
||||
before(() => {
|
||||
@ -440,7 +440,7 @@ describe('filter addrs', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('valid Connection', () => {
|
||||
describe('adapter valid Connection', () => {
|
||||
const ma = multiaddr('/ip4/127.0.0.1/tcp/9092/ws')
|
||||
|
||||
it('get observed addrs', (done) => {
|
||||
@ -554,10 +554,3 @@ describe('valid Connection', () => {
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe.skip('turbolence', () => {
|
||||
it('dialer - emits error on the other end is terminated abruptly', (done) => {
|
||||
})
|
||||
it('listener - emits error on the other end is terminated abruptly', (done) => {
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user