fix: tests

License: MIT
Signed-off-by: Alan Shaw <alan.shaw@protocol.ai>
This commit is contained in:
Alan Shaw 2019-04-18 13:31:26 +01:00
parent 6451c390e7
commit 89ae00a0b8
No known key found for this signature in database
GPG Key ID: AFC4442246B75B6F
4 changed files with 45 additions and 4 deletions

View File

@ -40,7 +40,7 @@
}, },
"homepage": "https://github.com/libp2p/js-libp2p-websockets#readme", "homepage": "https://github.com/libp2p/js-libp2p-websockets#readme",
"dependencies": { "dependencies": {
"abortable-iterator": "^1.0.4", "abortable-iterator": "^2.0.0",
"async-iterator-to-pull-stream": "^1.3.0", "async-iterator-to-pull-stream": "^1.3.0",
"class-is": "^1.1.0", "class-is": "^1.1.0",
"debug": "^4.1.1", "debug": "^4.1.1",

View File

@ -28,8 +28,8 @@ class WebSockets {
let onAbort let onAbort
const abort = new Promise((resolve, reject) => { const abort = new Promise((resolve, reject) => {
onAbort = () => { onAbort = () => {
reject(new AbortError())
socket.close() socket.close()
reject(new AbortError('connection aborted'))
} }
// Already aborted? // Already aborted?

View File

@ -2,7 +2,7 @@
const multiaddr = require('multiaddr') const multiaddr = require('multiaddr')
const os = require('os') const os = require('os')
const createServer = require('it-ws/server') const { createServer } = require('it-ws')
module.exports = (options, handler) => { module.exports = (options, handler) => {
if (typeof options === 'function') { if (typeof options === 'function') {

View File

@ -3,6 +3,7 @@
const tests = require('interface-transport') const tests = require('interface-transport')
const multiaddr = require('multiaddr') const multiaddr = require('multiaddr')
const http = require('http')
const WS = require('../src') const WS = require('../src')
describe('compliance', () => { describe('compliance', () => {
@ -15,7 +16,47 @@ describe('compliance', () => {
multiaddr('/dns4/ipfs.io/tcp/9092/ws'), multiaddr('/dns4/ipfs.io/tcp/9092/ws'),
multiaddr('/dns4/ipfs.io/tcp/9092/wss') multiaddr('/dns4/ipfs.io/tcp/9092/wss')
] ]
return { transport: ws, addrs }
let delayMs = 0
const delayedCreateListener = (options, handler) => {
if (typeof options === 'function') {
handler = options
options = {}
}
options = options || {}
// A server that will delay the upgrade event by delayMs
options.server = new Proxy(http.createServer(), {
get (server, prop) {
if (prop === 'on') {
return (event, handler) => {
server.on(event, (...args) => {
if (event !== 'upgrade' || !delayMs) {
return handler(...args)
}
setTimeout(() => handler(...args), delayMs)
})
}
}
return server[prop]
}
})
return ws.createListener(options, handler)
}
const wsProxy = new Proxy(ws, {
get: (_, prop) => prop === 'createListener' ? delayedCreateListener : ws[prop]
})
// Used by the dial tests to simulate a delayed connect
const connector = {
delay (ms) { delayMs = ms },
restore () { delayMs = 0 }
}
return { transport: wsProxy, addrs, connector }
}, },
async teardown () {} async teardown () {}
}) })