1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 18:00:18 +01:00
metamask-extension/test/unit-global/frozenPromise.test.js

54 lines
1.4 KiB
JavaScript
Raw Normal View History

Add SES lockdown to extension webapp (#9729) * Freezeglobals: remove Promise freezing, add lockdown * background & UI: temp disable sentry * add loose-envify, dedupe symbol-observable * use loose envify * add symbol-observable patch * run freezeGlobals after sentry init * use require instead of import * add lockdown to contentscript * add error code in message * try increasing node env heap size to 2048 * change back circe CI option * make freezeGlobals an exported function * make freezeGlobals an exported function * use freezeIntrinsics * pass down env to child process * fix unknown module * fix tests * change back to 2048 * fix import error * attempt to fix memory error * fix lint * fix lint * fix mem gain * use lockdown in phishing detect * fix lint * move sentry init into freezeIntrinsics to run lockdown before other imports * lint fix * custom lockdown modules per context * lint fix * fix global test * remove run in child process * remove lavamoat-core, use ses, require lockdown directly * revert childprocess * patch package postinstall * revert back child process * add postinstall to ci * revert node max space size to 1024 * put back loose-envify * Disable sentry to see if e2e tetss pass * use runLockdown, add as script in manifest * remove global and require from runlockdown * add more memory to tests * upgrade resource class for prep-build & prep-build-test * fix lint * lint fix * upgrade remote-redux-devtools * skillfully re-add sentry * lintfix * fix lint * put back beep * remove envify, add loose-envify and patch-package in dev deps * Replace patch with Yarn resolution (#9923) Instead of patching `symbol-observable`, this ensures that all versions of `symbol-observable` are resolved to the given range, even if it contradicts the requested range. Co-authored-by: Mark Stacey <markjstacey@gmail.com>
2020-11-24 04:26:43 +01:00
// Should occur before anything else
import './globalPatch';
import 'ses/lockdown';
import '../../app/scripts/runLockdown';
import { strict as assert } from 'assert'; /* eslint-disable-line import/first,import/order */
describe('Promise global is immutable', function () {
it('throws when reassinging promise (syntax 1)', function () {
try {
// eslint-disable-next-line no-global-assign,no-native-reassign
Promise = {};
assert.fail('did not throw error');
} catch (err) {
assert.ok(err, 'did throw error');
}
});
it('throws when reassinging promise (syntax 2)', function () {
try {
global.Promise = {};
assert.fail('did not throw error');
} catch (err) {
assert.ok(err, 'did throw error');
}
});
it('throws when mutating existing Promise property', function () {
try {
Promise.all = () => undefined;
assert.fail('did not throw error');
} catch (err) {
assert.ok(err, 'did throw error');
}
});
it('throws when adding new Promise property', function () {
try {
Promise.foo = 'bar';
assert.fail('did not throw error');
} catch (err) {
assert.ok(err, 'did throw error');
}
});
it('throws when deleting Promise from global', function () {
try {
delete global.Promise;
assert.fail('did not throw error');
} catch (err) {
assert.ok(err, 'did throw error');
}
});
});