From 74951dc4c04ebdb955d18937fa2043148b04c671 Mon Sep 17 00:00:00 2001 From: Ayush Pahwa Date: Thu, 21 Nov 2024 18:49:16 +0530 Subject: [PATCH] update: add tests for eval rule --- .../Linting/tests/getLintingErrors.test.ts | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/client/src/plugins/Linting/tests/getLintingErrors.test.ts b/app/client/src/plugins/Linting/tests/getLintingErrors.test.ts index 192770ced06b..b22778f12116 100644 --- a/app/client/src/plugins/Linting/tests/getLintingErrors.test.ts +++ b/app/client/src/plugins/Linting/tests/getLintingErrors.test.ts @@ -410,7 +410,6 @@ describe.each(linterTypes)( }); expect(Array.isArray(lintErrors)).toBe(true); - // Should have no errors expect(lintErrors.length).toEqual(1); const lintError = lintErrors[0]; @@ -471,6 +470,33 @@ describe.each(linterTypes)( // Should have no errors for assignments in conditions expect(lintErrors.length).toEqual(0); }); + + // Test for 'evil: false' (Disallow use of eval) + it("11. Should error when 'eval' is used", () => { + const data = {}; + const originalBinding = "{{ eval('var a = 1;') }}"; + const script = "eval('var a = 1;');"; + + const scriptType = getScriptType(false, true); + + const lintErrors = getLintingErrors({ + getLinterTypeFn: () => linterType, + data, + originalBinding, + script, + scriptType, + webworkerTelemetry, + }); + + expect(Array.isArray(lintErrors)).toBe(true); + expect(lintErrors.length).toEqual(1); + const lintError = lintErrors[0]; + + const expectedMessage = "eval can be harmful."; + + expect(lintError.severity).toBe(Severity.ERROR); + expect(lintError.errorMessage.message).toBe(expectedMessage); + }); }); }, );