diff options
Diffstat (limited to 'test/simple/test-net-create-connection.js')
-rw-r--r-- | test/simple/test-net-create-connection.js | 82 |
1 files changed, 74 insertions, 8 deletions
diff --git a/test/simple/test-net-create-connection.js b/test/simple/test-net-create-connection.js index 12f7f0be6..2dee02966 100644 --- a/test/simple/test-net-create-connection.js +++ b/test/simple/test-net-create-connection.js @@ -24,33 +24,99 @@ var assert = require('assert'); var net = require('net'); var tcpPort = common.PORT; +var expectedConnections = 7; var clientConnected = 0; var serverConnected = 0; var server = net.createServer(function(socket) { socket.end(); - if (++serverConnected === 4) { + if (++serverConnected === expectedConnections) { server.close(); } }); + server.listen(tcpPort, 'localhost', function() { function cb() { ++clientConnected; } + function fail(opts, errtype, msg) { + assert.throws(function() { + var client = net.createConnection(opts, cb); + }, function (err) { + return err instanceof errtype && msg === err.message; + }); + } + net.createConnection(tcpPort).on('connect', cb); net.createConnection(tcpPort, 'localhost').on('connect', cb); net.createConnection(tcpPort, cb); net.createConnection(tcpPort, 'localhost', cb); + net.createConnection(tcpPort + '', 'localhost', cb); + net.createConnection({port: tcpPort + ''}).on('connect', cb); + net.createConnection({port: '0x' + tcpPort.toString(16)}, cb); + + fail({ + port: true + }, TypeError, 'port should be a number or string: true'); + + fail({ + port: false + }, TypeError, 'port should be a number or string: false'); + + fail({ + port: [] + }, TypeError, 'port should be a number or string: '); + + fail({ + port: {} + }, TypeError, 'port should be a number or string: [object Object]'); + + fail({ + port: null + }, TypeError, 'port should be a number or string: null'); + + fail({ + port: '' + }, RangeError, 'port should be >= 0 and < 65536: '); + + fail({ + port: ' ' + }, RangeError, 'port should be >= 0 and < 65536: '); - assert.throws(function () { - net.createConnection({ - port: 'invalid!' - }, cb); - }); + fail({ + port: '0x' + }, RangeError, 'port should be >= 0 and < 65536: 0x'); + + fail({ + port: '-0x1' + }, RangeError, 'port should be >= 0 and < 65536: -0x1'); + + fail({ + port: NaN + }, RangeError, 'port should be >= 0 and < 65536: NaN'); + + fail({ + port: Infinity + }, RangeError, 'port should be >= 0 and < 65536: Infinity'); + + fail({ + port: -1 + }, RangeError, 'port should be >= 0 and < 65536: -1'); + + fail({ + port: 65536 + }, RangeError, 'port should be >= 0 and < 65536: 65536'); }); -process.on('exit', function() { - assert.equal(clientConnected, 4); +// Try connecting to random ports, but do so once the server is closed +server.on('close', function() { + function nop() {} + + net.createConnection({port: 0}).on('error', nop); + net.createConnection({port: undefined}).on('error', nop); }); +process.on('exit', function() { + assert.equal(clientConnected, expectedConnections); +}); |