mirror of
https://github.com/fluencelabs/js-libp2p-websockets
synced 2025-04-25 06:02:26 +00:00
fix: tests
License: MIT Signed-off-by: Alan Shaw <alan.shaw@protocol.ai>
This commit is contained in:
parent
6451c390e7
commit
89ae00a0b8
@ -40,7 +40,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/libp2p/js-libp2p-websockets#readme",
|
||||
"dependencies": {
|
||||
"abortable-iterator": "^1.0.4",
|
||||
"abortable-iterator": "^2.0.0",
|
||||
"async-iterator-to-pull-stream": "^1.3.0",
|
||||
"class-is": "^1.1.0",
|
||||
"debug": "^4.1.1",
|
||||
|
@ -28,8 +28,8 @@ class WebSockets {
|
||||
let onAbort
|
||||
const abort = new Promise((resolve, reject) => {
|
||||
onAbort = () => {
|
||||
reject(new AbortError())
|
||||
socket.close()
|
||||
reject(new AbortError('connection aborted'))
|
||||
}
|
||||
|
||||
// Already aborted?
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
const multiaddr = require('multiaddr')
|
||||
const os = require('os')
|
||||
const createServer = require('it-ws/server')
|
||||
const { createServer } = require('it-ws')
|
||||
|
||||
module.exports = (options, handler) => {
|
||||
if (typeof options === 'function') {
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
const tests = require('interface-transport')
|
||||
const multiaddr = require('multiaddr')
|
||||
const http = require('http')
|
||||
const WS = require('../src')
|
||||
|
||||
describe('compliance', () => {
|
||||
@ -15,7 +16,47 @@ describe('compliance', () => {
|
||||
multiaddr('/dns4/ipfs.io/tcp/9092/ws'),
|
||||
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 () {}
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user