1'use strict';
2
3require('../common');
4
5const vm = require('vm');
6const assert = require('assert');
7
8let base = {
9  propBase: 1
10};
11
12let sandbox = Object.create(base, {
13  propSandbox: { value: 3 }
14});
15
16const context = vm.createContext(sandbox);
17
18let result = vm.runInContext('Object.hasOwnProperty(this, "propBase");',
19                             context);
20
21assert.strictEqual(result, false);
22
23// Ref: https://github.com/nodejs/node/issues/5350
24base = Object.create(null);
25base.x = 1;
26base.y = 2;
27
28sandbox = Object.create(base);
29sandbox.z = 3;
30
31assert.deepStrictEqual(Object.keys(sandbox), ['z']);
32
33const code = 'x = 0; z = 4;';
34result = vm.runInNewContext(code, sandbox);
35assert.strictEqual(result, 4);
36
37// Check that y is not an own property.
38assert.deepStrictEqual(Object.keys(sandbox), ['z', 'x']);
39