diff options
Diffstat (limited to 'node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js')
| -rw-r--r-- | node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js b/node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js new file mode 100644 index 0000000..8f1c28d --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js @@ -0,0 +1,63 @@ +// Verify that both sides of the WS connection can both send and receive file +// descriptors. + +var assert = require('assert'); +var fs = require('fs'); +var path = require('path'); +var sys = require('sys'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PATH = path.join(__dirname, 'sock.' + process.pid); +var C_MSG = 'Client test: ' + (Math.random() * 100); +var S_MSG = 'Server test: ' + (Math.random() * 100); + +var clientReceivedData = false; +var clientReceivedFD = false; +var serverReceivedData = false; +var serverReceivedFD = false; + +var wss = new WebSocketServer(); +wss.on('listening', function() { + var ws = new WebSocket('ws+unix://' + PATH); + ws.on('data', function(d) { + assert.equal(d.toString('utf8'), S_MSG); + + clientReceivedData = true; + + ws.send(C_MSG, 1); + ws.close(); + }); + ws.on('fd', function(fd) { + assert.ok(fd >= 0); + + clientReceivedFD = true; + }); +}); +wss.on('connection', function(c) { + c.write(S_MSG, 0); + c._req.socket.on('fd', function(fd) { + assert.ok(fd >= 0); + + serverReceivedFD = true; + }); + c.on('message', function(d) { + assert.equal(d, C_MSG); + + serverReceivedData = true; + + wss.close(); + }); +}); +wss.listen(PATH); + +process.on('exit', function() { + assert.ok(clientReceivedFD); + assert.ok(clientReceivedData); + assert.ok(serverReceivedFD); + assert.ok(serverReceivedData); + + try { + fs.unlinkSync(PATH); + } catch (e) { } +}); |
