turted
Version:
The Universal Real Time Event Dispatcher
139 lines (114 loc) • 4.6 kB
JavaScript
var Connection = require('../models/Connection');
var UserManager = require('../models/UserManager');
var ChannelManager = require('../models/ChannelManager');
var ConnectionManager = require('../models/ConnectionManager');
var Dispatch = require('../models/Dispatch');
exports.connManRegistersConnections = function(test) {
var conn1 = new Connection({});
var conn2 = new Connection({});
var connManager = new ConnectionManager();
connManager.addConnection(conn1);
connManager.addConnection(conn2);
test.ok(connManager.connections.has(conn1.id), "Conn1 got registered");
test.ok(connManager.connections.has(conn2.id), "Conn2 got registered");
conn1.close();
//connMan.removeConnection(conn2);
test.equal(connManager.connections.has(conn1.id), false, "Conn1 got unregistered");
test.done();
}
exports.connManReturnsAllConnections = function(test) {
var conn1 = new Connection({});
var conn2 = new Connection({});
var connManager = new ConnectionManager();
connManager.addConnection(conn1);
connManager.addConnection(conn2);
test.equal((conn1.id in connManager.getConnections()), true, "Conn1 got registered");
conn1.close();
test.equal((conn1.id in connManager.getConnections()), false, "Conn1 got unregistered");
test.done();
};
exports.resolve = function(test) {
test.expect(13);
var auth = {
verify: function() {
return true
}
};
var conn1 = new Connection({});
var conn2 = new Connection({});
var conn3 = new Connection({});
var conn4 = new Connection({});
var conn5 = new Connection({});
var conn6 = new Connection({});
var conn7 = new Connection({});
var conn8 = new Connection({});
var conn9 = new Connection({});
var conn10 = new Connection({});
var userMan = new UserManager();
var chanMan = new ChannelManager();
var connMan = new ConnectionManager({
usermanager: userMan,
channelmanager: chanMan,
authenticator: auth
});
connMan.addConnection(conn1);
var d;
var expectation;
d = new Dispatch("test", "data", {broadcast: true});
connMan.resolve(d);
expectation = {};
expectation[conn1.id] = conn1;
test.deepEqual(d.getTargetConnections(), expectation, "Broadcast includes all");
conn1.close();
connMan.addConnection(conn2);
chanMan.handleJoin("test1", conn2);
d = new Dispatch("test", "data", {channels: ["test1"]});
connMan.resolve(d);
expectation = {};
expectation[conn2.id] = conn2;
test.deepEqual(d.getTargetConnections(), expectation, "Includes all of channel test1");
conn2.close();
connMan.addConnection(conn3);
chanMan.handleJoin("test1", conn3);
d = new Dispatch("test", "data", {channels: ["test1"]});
connMan.resolve(d);
expectation = {};
expectation[conn3.id] = conn3;
test.deepEqual(d.getTargetConnections(), expectation, "Resolve of channel test1");
conn3.close();
conn4.close();
chanMan.handleJoin("test1", conn5);
chanMan.handleJoin("test1", conn6);
userMan.addUserConnection("asdf", conn6);
chanMan.handleJoin("another", conn7);
userMan.addUserConnection("another", conn8);
d = new Dispatch("test", "data", {channels: ["test1"], users: ["asdf"]});
connMan.resolve(d);
expectation = {};
expectation[conn5.id] = conn5;
expectation[conn6.id] = conn6;
test.deepEqual(d.getTargetConnections(), expectation);
userMan.addUserConnection("asdf", conn9);
connMan.resolve(d);
var num = 0;
for (var i in d.getTargetConnections()) {
num++;
}
test.equal(num, 3, "returns 3 targets");
test.equal(d.getTargetConnections().hasOwnProperty(conn5.id), true, "5 is in");
test.equal(d.getTargetConnections().hasOwnProperty(conn6.id), true, "6 is in");
test.equal(d.getTargetConnections().hasOwnProperty(conn9.id), true, "9 is in");
userMan.addUserConnection("second", conn10);
d = new Dispatch("test", "data", {channels: ["test1"], users: ["asdf", "second"]});
connMan.resolve(d);
var num = 0;
for (var i in d.getTargetConnections()) {
num++;
}
test.equal(num, 4, "returns 4 targets");
test.equal(d.getTargetConnections().hasOwnProperty(conn5.id), true, "5 is in");
test.equal(d.getTargetConnections().hasOwnProperty(conn6.id), true, "6 is in");
test.equal(d.getTargetConnections().hasOwnProperty(conn9.id), true, "9 is in");
test.equal(d.getTargetConnections().hasOwnProperty(conn10.id), true, "10 is in");
test.done();
};