summaryrefslogtreecommitdiff
path: root/node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js
diff options
context:
space:
mode:
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.js63
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) { }
+});