YUKI Hiroshi
null+****@clear*****
Mon Jan 21 16:02:21 JST 2013
YUKI Hiroshi 2013-01-21 16:02:21 +0900 (Mon, 21 Jan 2013) New Revision: ac93f5a3d93f5237556304d6a37180a1a8895ff6 https://github.com/groonga/express-kotoumi/commit/ac93f5a3d93f5237556304d6a37180a1a8895ff6 Log: Add test for back-to-front communication by socket.io API Modified files: test/socket-api.test.js Modified: test/socket-api.test.js (+66 -4) =================================================================== --- test/socket-api.test.js 2013-01-21 15:36:56 +0900 (b0e63cf) +++ test/socket-api.test.js 2013-01-21 16:02:21 +0900 (bb184e1) @@ -11,13 +11,24 @@ var Connection = require('../lib/backend-adaptor').Connection; var client = require('socket.io-client'); suite('Socket.IO API', function() { + function createClientSocket() { + var host = 'http://localhost:' + utils.testServerPort; + var options = { 'force new connection': true }; + return client.connect(host, options); + } + var server; + var clientSocket; teardown(function() { + if (clientSocket) { + clientSocket.disconnect(); + clientSocket = undefined; + } if (server) { server.close(); + server = undefined; } - server = undefined; }); test('front to back', function(done) { @@ -34,16 +45,67 @@ suite('Socket.IO API', function() { connection: connection }); - var clientSocket = client.connect('http://localhost:' + utils.testServerPort); + clientSocket = createClientSocket(); Deferred - .wait(0.1) + .wait(0.01) .next(function() { clientSocket.emit('search', { requestMessage: true }); }) - .wait(0.1) + .wait(0.01) + .next(function() { + connection.assertThrows(); + done(); + }) + .error(function(error) { + done(error); + }); + }); + + test('back to front', function(done) { + var connection = nodemock; + var onMessageControllers = {}; + socketAdaptor.commands.forEach(function(command) { + onMessageControllers[command] = {}; + connection = connection + .mock('on') + .takes('message', function() {}) + .ctrl(1, onMessageControllers[command]); + }); + + var application = express(); + server = utils.setupServer(application); + socketAdaptor.registerHandlers(application, server, { + connection: connection + }); + + clientSocket = createClientSocket(); + + var clientReceiver = nodemock + .mock('receive') + .takes({ + statusCode: 200, + body: { searchResult: true } + }); + clientSocket.on('search.result', function(data) { + clientReceiver.receive(data); + }); + + Deferred + .wait(0.01) .next(function() { connection.assertThrows(); + + var envelope = { + type: 'search.result', + statusCode: 200, + body: { searchResult: true} + }; + onMessageControllers.search.trigger(envelope); + }) + .wait(0.01) + .next(function() { + clientReceiver.assertThrows(); done(); }) .error(function(error) { -------------- next part -------------- HTML����������������������������... Télécharger