summaryrefslogtreecommitdiff
path: root/test/parallel/test-event-emitter-special-event-names.js
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2016-04-06 20:33:28 -0400
committerBrian White <mscdex@mscdex.net>2016-04-18 21:45:26 -0400
commite38bade82801645d8cc1010e3f4e9826052244cb (patch)
tree01ca88375556ee4864a3895ccb7a6ebea020d961 /test/parallel/test-event-emitter-special-event-names.js
parentdba245f79622c0c5877825f7cd11667be3548e8e (diff)
downloadandroid-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.tar.gz
android-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.tar.bz2
android-node-v8-e38bade82801645d8cc1010e3f4e9826052244cb.zip
events: don't inherit from Object.prototype
This commit safely allows event names that are named the same as properties that are ordinarily inherited from Object.prototype such as __proto__. Fixes: https://github.com/nodejs/node/issues/728 PR-URL: https://github.com/nodejs/node/pull/6092 Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel/test-event-emitter-special-event-names.js')
-rw-r--r--test/parallel/test-event-emitter-special-event-names.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/parallel/test-event-emitter-special-event-names.js b/test/parallel/test-event-emitter-special-event-names.js
new file mode 100644
index 0000000000..fb3f1b52d9
--- /dev/null
+++ b/test/parallel/test-event-emitter-special-event-names.js
@@ -0,0 +1,36 @@
+'use strict';
+
+const common = require('../common');
+const EventEmitter = require('events');
+const assert = require('assert');
+
+const ee = new EventEmitter();
+const handler = () => {};
+
+assert.strictEqual(ee._events.hasOwnProperty, undefined);
+assert.strictEqual(ee._events.toString, undefined);
+
+ee.on('__proto__', handler);
+ee.on('__defineGetter__', handler);
+ee.on('toString', handler);
+
+assert.deepStrictEqual(ee.eventNames(), [
+ '__proto__',
+ '__defineGetter__',
+ 'toString'
+]);
+
+assert.deepStrictEqual(ee.listeners('__proto__'), [handler]);
+assert.deepStrictEqual(ee.listeners('__defineGetter__'), [handler]);
+assert.deepStrictEqual(ee.listeners('toString'), [handler]);
+
+ee.on('__proto__', common.mustCall(function(val) {
+ assert.strictEqual(val, 1);
+}));
+ee.emit('__proto__', 1);
+
+process.on('__proto__', common.mustCall(function(val) {
+ assert.strictEqual(val, 1);
+}));
+process.emit('__proto__', 1);
+