From bfb7a22d3d2e49e1e8f1cd16fa5bb042aa15c466 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 12 Jul 2020 23:19:15 +0300 Subject: [PATCH] Added more test for `numbersToExpressions` option --- test/dev/dev.ts | 2 +- ...sToNumericalExpressionsTransformer.spec.ts | 22 +++++++++++++++++++ .../fixtures/member-expression.js | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/fixtures/member-expression.js diff --git a/test/dev/dev.ts b/test/dev/dev.ts index 90f1c24e..c1c69f9c 100644 --- a/test/dev/dev.ts +++ b/test/dev/dev.ts @@ -7,7 +7,7 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo let obfuscatedCode: string = JavaScriptObfuscator.obfuscate( ` - const foo = 0; + const foo = 0..toString(); const bar = 'abc'; console.log(foo, bar); diff --git a/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/NumbersToNumericalExpressionsTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/NumbersToNumericalExpressionsTransformer.spec.ts index 84e94990..6fd77bb7 100644 --- a/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/NumbersToNumericalExpressionsTransformer.spec.ts +++ b/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/NumbersToNumericalExpressionsTransformer.spec.ts @@ -164,4 +164,26 @@ describe('NumbersToNumericalExpressionsTransformer', function () { assert.match(obfuscatedCode, regExp); }); }); + + describe('Variant #4: parent node is member expression', () => { + const regExp: RegExp = /\((?:-?0x[a-zA-Z0-9]+(?: *[+\-*] *)?)*?\)\['toString']\(\);/; + + let obfuscatedCode: string; + + before(() => { + const code: string = readFileAsString(__dirname + '/fixtures/member-expression.js'); + + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + numbersToExpressions: true + } + ).getObfuscatedCode(); + }); + + it('should replace member expression with literal object with expression', () => { + assert.match(obfuscatedCode, regExp); + }); + }); }); diff --git a/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/fixtures/member-expression.js b/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/fixtures/member-expression.js new file mode 100644 index 00000000..9b3edae1 --- /dev/null +++ b/test/functional-tests/node-transformers/converting-transformers/numbers-to-numerical-expressions-transformer/fixtures/member-expression.js @@ -0,0 +1 @@ +0..toString(); \ No newline at end of file