From 4c06baee44b78f1f2743581ecb1fee946ad55aad Mon Sep 17 00:00:00 2001 From: tjcouch-sil Date: Thu, 23 May 2024 09:24:46 +0900 Subject: [PATCH] Added positive assertions to tests --- .../mui-utils/src/deepmerge/deepmerge.test.ts | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/mui-utils/src/deepmerge/deepmerge.test.ts b/packages/mui-utils/src/deepmerge/deepmerge.test.ts index 07d3f83ea3a091..9cb09790761553 100644 --- a/packages/mui-utils/src/deepmerge/deepmerge.test.ts +++ b/packages/mui-utils/src/deepmerge/deepmerge.test.ts @@ -5,16 +5,23 @@ import deepmerge from './deepmerge'; describe('deepmerge', () => { // https://snyk.io/blog/after-three-years-of-silence-a-new-jquery-prototype-pollution-vulnerability-emerges-once-again/ it('should not be subject to prototype pollution via __proto__', () => { - deepmerge({}, JSON.parse('{ "myProperty": "a", "__proto__" : { "isAdmin" : true } }'), { - clone: false, - }); + const result = deepmerge( + {}, + JSON.parse('{ "myProperty": "a", "__proto__" : { "isAdmin" : true } }'), + { + clone: false, + }, + ); + // @ts-expect-error __proto__ is not on this object type + // eslint-disable-next-line no-proto + expect(result.__proto__).to.have.property('isAdmin'); expect({}).not.to.have.property('isAdmin'); }); // https://cwe.mitre.org/data/definitions/915.html it('should not be subject to prototype pollution via constructor', () => { - deepmerge( + const result = deepmerge( {}, JSON.parse('{ "myProperty": "a", "constructor" : { "prototype": { "isAdmin" : true } } }'), { @@ -22,15 +29,22 @@ describe('deepmerge', () => { }, ); + expect(result.constructor.prototype).to.have.property('isAdmin'); expect({}).not.to.have.property('isAdmin'); }); // https://cwe.mitre.org/data/definitions/915.html it('should not be subject to prototype pollution via prototype', () => { - deepmerge({}, JSON.parse('{ "myProperty": "a", "prototype": { "isAdmin" : true } }'), { - clone: false, - }); + const result = deepmerge( + {}, + JSON.parse('{ "myProperty": "a", "prototype": { "isAdmin" : true } }'), + { + clone: false, + }, + ); + // @ts-expect-error prototype is not on this object type + expect(result.prototype).to.have.property('isAdmin'); expect({}).not.to.have.property('isAdmin'); }); @@ -44,7 +58,7 @@ describe('deepmerge', () => { // eslint-disable-next-line no-proto expect(result.__proto__).to.have.property('isAdmin'); expect({}).not.to.have.property('isAdmin'); - }) + }); it('should merge objects across realms', function test() { if (!/jsdom/.test(window.navigator.userAgent)) {