From 40a61e13994761aa91c13a71df97ccba57d33b2b Mon Sep 17 00:00:00 2001 From: Evan Lucas Date: Wed, 5 Jul 2017 13:43:56 -0500 Subject: [PATCH] test: add get/set effective uid/gid tests 3c92ca2b5c1aea283efebd50b27e2a256adf5f7f should have had tests to go along with it. This adds tests for the following functions: * `process.geteuid()` * `process.seteuid()` * `process.getegid()` * `process.setegid()` PR-URL: https://github.com/nodejs/node/pull/14091 Reviewed-By: Colin Ihrig Reviewed-By: Claudio Rodriguez Reviewed-By: Refael Ackermann Reviewed-By: James M Snell --- test/parallel/test-process-geteuid-getegid.js | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 test/parallel/test-process-geteuid-getegid.js diff --git a/test/parallel/test-process-geteuid-getegid.js b/test/parallel/test-process-geteuid-getegid.js new file mode 100644 index 00000000000000..8dab52389b0384 --- /dev/null +++ b/test/parallel/test-process-geteuid-getegid.js @@ -0,0 +1,49 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); + +if (common.isWindows) { + assert.strictEqual(process.geteuid, undefined); + assert.strictEqual(process.getegid, undefined); + assert.strictEqual(process.seteuid, undefined); + assert.strictEqual(process.setegid, undefined); + return; +} + +assert.throws(() => { + process.seteuid({}); +}, /^TypeError: seteuid argument must be a number or string$/); + +assert.throws(() => { + process.seteuid('fhqwhgadshgnsdhjsdbkhsdabkfabkveybvf'); +}, /^Error: seteuid user id does not exist$/); + +// If we're not running as super user... +if (process.getuid() !== 0) { + assert.doesNotThrow(() => { + process.getegid(); + process.geteuid(); + }); + + assert.throws(() => { + process.setegid('nobody'); + }, /^Error: (?:EPERM, .+|setegid group id does not exist)$/); + + assert.throws(() => { + process.seteuid('nobody'); + }, /^Error: (?:EPERM, .+|seteuid user id does not exist)$/); + + return; +} + +// If we are running as super user... +const oldgid = process.getegid(); +process.setegid('nobody'); +const newgid = process.getegid(); +assert.notStrictEqual(newgid, oldgid); + +const olduid = process.geteuid(); +process.seteuid('nobody'); +const newuid = process.geteuid(); +assert.notStrictEqual(newuid, olduid);