0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-25 08:19:38 +01:00
nodejs/test/parallel/test-net-pipe-connect-errors.js
isaacs 3e1b1dd4a9 Remove excessive copyright/license boilerplate
The copyright and license notice is already in the LICENSE file.  There
is no justifiable reason to also require that it be included in every
file, since the individual files are not individually distributed except
as part of the entire package.
2015-01-12 15:30:28 -08:00

90 lines
2.3 KiB
JavaScript

var fs = require('fs');
var net = require('net');
var path = require('path');
var assert = require('assert');
var common = require('../common');
var notSocketErrorFired = false;
var noEntErrorFired = false;
var accessErrorFired = false;
// Test if ENOTSOCK is fired when trying to connect to a file which is not
// a socket.
var emptyTxt;
if (process.platform === 'win32') {
// on Win, common.PIPE will be a named pipe, so we use an existing empty
// file instead
emptyTxt = path.join(common.fixturesDir, 'empty.txt');
} else {
// use common.PIPE to ensure we stay within POSIX socket path length
// restrictions, even on CI
emptyTxt = common.PIPE + '.txt';
function cleanup() {
try {
fs.unlinkSync(emptyTxt);
} catch (e) {
if (e.code != 'ENOENT')
throw e;
}
}
process.on('exit', cleanup);
cleanup();
fs.writeFileSync(emptyTxt, '');
}
var notSocketClient = net.createConnection(emptyTxt, function() {
assert.ok(false);
});
notSocketClient.on('error', function(err) {
assert(err.code === 'ENOTSOCK' || err.code === 'ECONNREFUSED');
notSocketErrorFired = true;
});
// Trying to connect to not-existing socket should result in ENOENT error
var noEntSocketClient = net.createConnection('no-ent-file', function() {
assert.ok(false);
});
noEntSocketClient.on('error', function(err) {
assert.equal(err.code, 'ENOENT');
noEntErrorFired = true;
});
// On Windows or when running as root, a chmod has no effect on named pipes
if (process.platform !== 'win32' && process.getuid() !== 0) {
// Trying to connect to a socket one has no access to should result in EACCES
var accessServer = net.createServer(function() {
assert.ok(false);
});
accessServer.listen(common.PIPE, function() {
fs.chmodSync(common.PIPE, 0);
var accessClient = net.createConnection(common.PIPE, function() {
assert.ok(false);
});
accessClient.on('error', function(err) {
assert.equal(err.code, 'EACCES');
accessErrorFired = true;
accessServer.close();
});
});
}
// Assert that all error events were fired
process.on('exit', function() {
assert.ok(notSocketErrorFired);
assert.ok(noEntErrorFired);
if (process.platform !== 'win32' && process.getuid() !== 0) {
assert.ok(accessErrorFired);
}
});