summaryrefslogtreecommitdiff
path: root/node_modules/socket.io/support/node-websocket-client/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/socket.io/support/node-websocket-client/test')
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-basic.js68
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-client-close.js43
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-readonly-attrs.js43
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-ready-state.js26
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-server-close.js41
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-unix-send-fd.js63
-rw-r--r--node_modules/socket.io/support/node-websocket-client/test/test-unix-sockets.js46
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) { }
+});