[Groonga-commit] groonga/express-kotoumi [master] Add test for back-to-front communication by socket.io API

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index