File Explorer

/var/runtime/node_modules/@aws-sdk/node_modules/@httptoolkit/websocket-stream

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

test.js7.4 KB · 339 lines
var test = require('tape')var websocket = require('./')var echo = require("./echo-server")var WebSocketServer = require('ws').Servervar http = require('http')var concat = require('concat-stream')var Buffer = require('safe-buffer').Buffervar ts = require('typescript') test('echo server', function(t) {   echo.start(function() {    var client = websocket(echo.url)     client.on('error', console.error)     client.on('data', function(data) {      t.ok(Buffer.isBuffer(data), 'is a buffer')      t.equal(data.toString(), 'hello world')      client.end()      echo.stop(function() {        t.end()      })    })     client.write('hello world')  }) }) test('emitting not connected errors', function(t) {   echo.start(function() {    var client = websocket(echo.url)     client.on('error', function() {      echo.stop(function() {        t.true(true, 'should emit error')        t.end()      })    })     client.once('data', function(data) {      client.end()      client.write('abcde')    })     client.write('hello world')  }) }) test('passes options to websocket constructor', function(t) {  t.plan(3)   opts = {    verifyClient: function verifyClient(info) {      t.equal(info.req.headers['x-custom-header'], 'Custom Value')      return true    }  }  echo.start(opts, function() {    var options = {headers: {'x-custom-header': 'Custom Value'}}    var client = websocket(echo.url, options)     client.on('error', console.error)     client.on('data', function(data) {      t.ok(Buffer.isBuffer(data), 'is a buffer')      t.equal(data.toString(), 'hello world')      client.end()      echo.stop(function() {})    })     client.write('hello world')  }) })  test('destroy', function(t) {  t.plan(1)   echo.start(function() {    var client = websocket(echo.url, echo.options)     client.on('close', function() {      echo.stop(function() {        t.pass('destroyed')      })    })     setTimeout(function() {      client.destroy()    }, 200)  }) }) test('drain', function(t) {  t.plan(1)   echo.start(function() {    var client = websocket(echo.url, echo.options)     client.on('drain', function() {      client.destroy()      echo.stop(function() {        t.pass('drained')      })    })     // write until buffer is full    while (client.write('foobar')) {}  }) }) test('emit sending errors if the socket is closed by the other party', function(t) {   var server = http.createServer()  var wss = new WebSocketServer({ server: server })   server.listen(8344, function() {    var client = websocket('ws://localhost:8344')     wss.on('connection', function(ws) {      var stream = websocket(ws)       client.destroy()       setTimeout(function() {        stream.write('hello world')      }, 50)       stream.on('error', function(err) {        t.ok(err, 'client errors')        server.close(t.end.bind(t))      })    })  })}) test('destroy client pipe should close server pipe', function(t) {  t.plan(1)   var clientDestroy = function() {    var client = websocket(echo.url, echo.options)    client.on('data', function(o) {      client.destroy()    })    client.write(Buffer.from('hello'))  }   var opts = {}  var server = http.createServer()  opts.server = server  var wss = new WebSocketServer(opts)  wss.on('connection', function(ws) {    var stream = websocket(ws)    stream.on('close', function() {      server.close(function() {        t.pass('close is called')      })    })    stream.pipe(stream)  })  server.listen(echo.port, clientDestroy)})  test('error on socket should forward it to pipe', function(t) {  t.plan(1)   var clientConnect = function() {    websocket(echo.url, echo.options)  }   var opts = {}  var server = http.createServer()  opts.server = server  var wss = new WebSocketServer(opts)  wss.on('connection', function(ws) {    var stream = websocket(ws)    stream.on('error', function() {      server.close(function() {        t.pass('error is called')      })    })    stream.socket.emit('error', new Error('Fake error'))  })  server.listen(echo.port, clientConnect)}) test('stream end', function(t) {  t.plan(1)   var server = http.createServer()  websocket.createServer({ server: server }, handle)   function handle (stream) {    stream.pipe(concat(function (body) {      t.equal(body.toString(), 'pizza cats\n')      server.close()    }))  }  server.listen(0, function () {    var w = websocket('ws://localhost:' + server.address().port)    w.end('pizza cats\n')  })}) test('stream handlers should fire once per connection', function(t) {  t.plan(2)   var server = http.createServer()  var wss = websocket.createServer({ server: server }, function() {    server.close(function() {      t.equal(m, 1)    })  })   var m = 0  wss.on('stream', function(stream, request) {    t.ok(request instanceof http.IncomingMessage)    m++  })  server.listen(0, function() {    var w = websocket('ws://localhost:' + server.address().port)    w.end('pizza cats\n')  })}) test('client with writev', function(t) {  var server = http.createServer()   var str = ''  var wss = websocket.createServer({    server: server  }, function (stream) {    stream.once('data', function(data) {      t.ok(Buffer.isBuffer(data), 'is a buffer')      t.equal(data.toString(), 'hello world')       stream.once('data', function(data) {        t.ok(Buffer.isBuffer(data), 'is a buffer')        t.equal(data.toString(), str)        stream.end()        server.close()        t.end()      })    })  })   server.listen(8352, function () {    var client = websocket('ws://localhost:8352', {      objectMode: false    })     client.on('error', console.error)     client.once('connect', function () {      client.cork()      do {        str += 'foobar'      } while (client.write('foobar'))      client.uncork()    })     client.write('hello world')  })}) test('server with writev', function(t) {  var server = http.createServer()   var str = ''  var wss = websocket.createServer({    server: server,    objectMode: false  }, function (stream) {    stream.cork()    do {      str += 'foobar'    } while (stream.write('foobar'))    stream.uncork()  })   server.listen(8352, function () {    var client = websocket('ws://localhost:8352')     client.on('error', console.error)     client.once('data', function(data) {      t.ok(Buffer.isBuffer(data), 'is a buffer')      t.equal(data.toString(), str)      client.end()      server.close()      t.end()    })  })}) test('stop echo', function(t) {  echo.stop(function() {    t.end()  })}) test('typescript compilation', function(t) {  function compile(fileNames, options) {    const program = ts.createProgram(fileNames, options)    const emitResult = program.emit()     const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics)     return allDiagnostics.map(diagnostic => {      if (diagnostic.file) {        let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start)        let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")        return `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`      } else {        return `${ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`      }    });  }   const messages = compile(['./ts-tests.ts'], {    noEmit: true,    noImplicitAny: true,    target: ts.ScriptTarget.ES5,    module: ts.ModuleKind.CommonJS  })   t.equal(messages.length, 0, 'no errors emitted')  t.end()})