diff options
Diffstat (limited to 'node_modules/socket.io/support/node-websocket-client/test')
7 files changed, 330 insertions, 0 deletions
diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-basic.js b/node_modules/socket.io/support/node-websocket-client/test/test-basic.js new file mode 100644 index 0000000..f010424 --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-basic.js @@ -0,0 +1,68 @@ +// Verify that we can connect to a WebSocket server, exchange messages, and +// shut down cleanly. + +var assert = require('assert'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PORT = 1024 + Math.floor(Math.random() * 4096); +var C_MSG = 'Client test: ' + (Math.random() * 100); +var S_MSG = 'Server test: ' + (Math.random() * 100); + +var serverGotConnection = false; +var clientGotOpen = false; +var clientGotData = false; +var clientGotMessage = false; +var serverGotMessage = false; +var serverGotClose = false; +var clientGotClose = false; + +var wss = new WebSocketServer(); +wss.listen(PORT, 'localhost'); +wss.on('connection', function(c) { + serverGotConnection = true; + + c.on('message', function(m) { + assert.equal(m, C_MSG); + serverGotMessage = true; + + c.close(); + }); + + c.on('close', function() { + serverGotClose = true; + wss.close(); + }); + + c.write(S_MSG); +}); + +var ws = new WebSocket('ws://localhost:' + PORT + '/', 'biff'); +ws.on('open', function() { + clientGotOpen = true; +}); +ws.on('data', function(buf) { + assert.equal(typeof buf, 'object'); + assert.equal(buf.toString('utf8'), S_MSG); + + clientGotData = true; + + ws.send(C_MSG); +}); +ws.onmessage = function(m) { + assert.deepEqual(m, {data : S_MSG}); + clientGotMessage = true; +}; +ws.onclose = function() { + clientGotClose = true; +}; + +process.on('exit', function() { + assert.ok(serverGotConnection); + assert.ok(clientGotOpen); + assert.ok(clientGotData); + assert.ok(clientGotMessage); + assert.ok(serverGotMessage); + assert.ok(serverGotClose); + assert.ok(clientGotClose); +}); diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-client-close.js b/node_modules/socket.io/support/node-websocket-client/test/test-client-close.js new file mode 100644 index 0000000..76fb81f --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-client-close.js @@ -0,0 +1,43 @@ +// Verify that a connection can be closed gracefully from the client. + +var assert = require('assert'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PORT = 1024 + Math.floor(Math.random() * 4096); +var C_MSG = 'Client test: ' + (Math.random() * 100); + +var serverGotClientMessage = false; +var clientGotServerClose = false; +var serverGotClientClose = false; + +var wss = new WebSocketServer(); +wss.listen(PORT, 'localhost'); +wss.on('connection', function(c) { + c.on('message', function(m) { + assert.equal(m, C_MSG); + serverGotClientMessage = true; + }); + c.on('close', function() { + serverGotClientClose = true; + wss.close(); + }); +}); + +var ws = new WebSocket('ws://localhost:' + PORT); +ws.onopen = function() { + ws.send(C_MSG); + + // XXX: Add a timeout here + ws.close(5); +}; +ws.onclose = function() { + assert.equal(ws.CLOSED, ws.readyState); + clientGotServerClose = true; +}; + +process.on('exit', function() { + assert.ok(serverGotClientMessage); + assert.ok(clientGotServerClose); + assert.ok(serverGotClientClose); +}); diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-readonly-attrs.js b/node_modules/socket.io/support/node-websocket-client/test/test-readonly-attrs.js new file mode 100644 index 0000000..de896b3 --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-readonly-attrs.js @@ -0,0 +1,43 @@ +// Verify that some attributes of a WebSocket object are read-only. + +var assert = require('assert'); +var sys = require('sys'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PORT = 1024 + Math.floor(Math.random() * 4096); + +var wss = new WebSocketServer(); +wss.listen(PORT, 'localhost'); +wss.on('connection', function(c) { + c.close(); + wss.close(); +}); +var ws = new WebSocket('ws://localhost:' + PORT + '/', 'biff'); +ws.on('open', function() { + assert.equal(ws.CONNECTING, 0); + try { + ws.CONNECTING = 13; + assert.equal( + ws.CONNECTING, 0, + 'Should not have been able to set read-only CONNECTING attribute' + ); + } catch (e) { + assert.equal(e.type, 'no_setter_in_callback'); + } + + assert.equal(ws.OPEN, 1); + assert.equal(ws.CLOSING, 2); + assert.equal(ws.CLOSED, 3); + + assert.equal(ws.url, 'ws://localhost:' + PORT + '/'); + try { + ws.url = 'foobar'; + assert.equal( + ws.url, 'ws://localhost:' + PORT + '/', + 'Should not have been able to set read-only url attribute' + ); + } catch (e) { + assert.equal(e.type, 'no_setter_in_callback'); + } +}); diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-ready-state.js b/node_modules/socket.io/support/node-websocket-client/test/test-ready-state.js new file mode 100644 index 0000000..8fcbd4c --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-ready-state.js @@ -0,0 +1,26 @@ +// Verify that readyState transitions are implemented correctly + +var assert = require('assert'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PORT = 1024 + Math.floor(Math.random() * 4096); + +var wss = new WebSocketServer(); +wss.listen(PORT, 'localhost'); +wss.on('connection', function(c) { + c.close(); +}); + +var ws = new WebSocket('ws://localhost:' + PORT); +assert.equal(ws.readyState, ws.CONNECTING); +ws.onopen = function() { + assert.equal(ws.readyState, ws.OPEN); + + ws.close(); + assert.ok(ws.readyState == ws.CLOSING); +}; +ws.onclose = function() { + assert.equal(ws.readyState, ws.CLOSED); + wss.close(); +}; diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-server-close.js b/node_modules/socket.io/support/node-websocket-client/test/test-server-close.js new file mode 100644 index 0000000..a286429 --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-server-close.js @@ -0,0 +1,41 @@ +// Verify that a connection can be closed gracefully from the server. + +var assert = require('assert'); +var WebSocket = require('../lib/websocket').WebSocket; +var WebSocketServer = require('websocket-server/ws/server').Server; + +var PORT = 1024 + Math.floor(Math.random() * 4096); +var S_MSG = 'Server test: ' + (Math.random() * 100); + +var clientGotServerMessage = false; +var clientGotServerClose = false; +var serverGotClientClose = false; + +var wss = new WebSocketServer(); +wss.listen(PORT, 'localhost'); +wss.on('connection', function(c) { + c.on('close', function() { + serverGotClientClose = true; + wss.close(); + }); + + c.write(S_MSG); + c.close(); +}); + +var ws = new WebSocket('ws://localhost:' + PORT); +ws.onmessage = function(m) { + assert.deepEqual(m, {data: S_MSG}); + + clientGotServerMessage = true; +}; +ws.onclose = function() { + assert.equal(ws.CLOSED, ws.readyState); + clientGotServerClose = true; +}; + +process.on('exit', function() { + assert.ok(clientGotServerMessage); + assert.ok(clientGotServerClose); + assert.ok(serverGotClientClose); +}); 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) { } +}); diff --git a/node_modules/socket.io/support/node-websocket-client/test/test-unix-sockets.js b/node_modules/socket.io/support/node-websocket-client/test/test-unix-sockets.js new file mode 100644 index 0000000..5cbf094 --- /dev/null +++ b/node_modules/socket.io/support/node-websocket-client/test/test-unix-sockets.js @@ -0,0 +1,46 @@ +// Verify that we can connect to a server over UNIX domain sockets. + +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 S_MSG = 'Server test: ' + (Math.random() * 100); + +var serverGotConnection = false; +var clientGotOpen = false; +var clientGotData = false; + +var wss = new WebSocketServer(); +wss.on('listening', function() { + var ws = new WebSocket('ws+unix://' + PATH); + ws.on('open', function() { + clientGotOpen = true; + + ws.close(); + }); + ws.on('data', function(d) { + assert.equal(d.toString('utf8'), S_MSG); + clientGotData = true; + }); +}); +wss.on('connection', function(c) { + serverGotConnection = true; + + c.write(S_MSG); + wss.close(); +}); +wss.listen(PATH); + +process.on('exit', function() { + assert.ok(serverGotConnection); + assert.ok(clientGotOpen); + assert.ok(clientGotData); + + try { + fs.unlinkSync(PATH); + } catch(e) { } +}); |
