require(__dirname+'/test-helper'); var Connection = require(__dirname + '/../../../lib/connection'); test('connection can take existing stream', function() { var stream = new MemoryStream(); var con = new Connection({stream: stream}); assert.equal(con.stream, stream); }); test('using closed stream', function() { var makeStream = function() { var stream = new MemoryStream(); stream.readyState = 'closed'; stream.connect = function(port, host) { this.connectCalled = true; this.port = port; this.host = host; } return stream; }; var stream = makeStream(); var con = new Connection({stream: stream}); con.connect(1234, 'bang'); test('makes stream connect', function() { assert.equal(stream.connectCalled, true); }); test('uses configured port', function() { assert.equal(stream.port, 1234); }); test('uses configured host', function() { assert.equal(stream.host, 'bang'); }); test('after stream connects client emits connected event', function() { var hit = false; con.once('connect', function() { hit = true; }); assert.ok(stream.emit('connect')); assert.ok(hit); }); test('after stream emits connected event init TCP-keepalive', function() { var stream = makeStream(); var con = new Connection({ stream: stream, keepAlive: true }); con.connect(123, 'test'); var res = false; stream.setKeepAlive = function(bit) { res = bit; }; assert.ok(stream.emit('connect')); setTimeout(function() { assert.equal(res, true); }) }); }); test('using opened stream', function() { var stream = new MemoryStream(); stream.readyState = 'open'; stream.connect = function() { assert.ok(false, "Should not call open"); }; var con = new Connection({stream: stream}); test('does not call open', function() { var hit = false; con.once('connect', function() { hit = true; }); con.connect(); assert.ok(hit); }); });