From 48b656db07b2d6a8a850654ddb361bc1c1cb3f10 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 24 Jul 2016 21:10:59 +0300 Subject: [PATCH] MethodDefinitionObfuscator tests --- .../MethodDefinitionObfuscator.ts | 6 +-- .../MethodDefinitionObfuscator.spec.ts | 47 +++++++++++++++++++ test/index.spec.ts | 1 + 3 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 test/functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec.ts diff --git a/src/node-obfuscators/MethodDefinitionObfuscator.ts b/src/node-obfuscators/MethodDefinitionObfuscator.ts index 84bf3c7f..4c2e06de 100644 --- a/src/node-obfuscators/MethodDefinitionObfuscator.ts +++ b/src/node-obfuscators/MethodDefinitionObfuscator.ts @@ -9,12 +9,10 @@ import { Utils } from "../Utils"; /** * replaces: - * function foo () { //... }; - * foo(); + * foo () { //... }; * * on: - * function _0x12d45f () { //... }; - * _0x12d45f(); + * [_0x9a4e('0x0')] { //... }; */ export class MethodDefinitionObfuscator extends NodeObfuscator { /** diff --git a/test/functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec.ts b/test/functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec.ts new file mode 100644 index 00000000..c1d3c034 --- /dev/null +++ b/test/functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec.ts @@ -0,0 +1,47 @@ +import { IObfuscationResult } from "../../../src/interfaces/IObfuscationResult"; + +import { NO_CUSTOM_NODES_PRESET } from "../../../src/preset-options/NoCustomNodesPreset"; + +import { JavaScriptObfuscator } from "../../../src/JavaScriptObfuscator"; + +const assert: Chai.AssertStatic = require('chai').assert; + +describe('MethodDefinitionObfuscator', () => { + let code: string = ` + class Foo { + constructor () {} + bar () {} + } + `; + + it('should replace method definition node `key` property with unicode value', () => { + let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, + Object.assign({}, NO_CUSTOM_NODES_PRESET) + ); + + assert.match(obfuscationResult.getObfuscatedCode(), /\['\\x62\\x61\\x72'\]\(\)\{\}/); + }); + + it('should replace method definition node `key` property with unicode array call', () => { + let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, + Object.assign({}, NO_CUSTOM_NODES_PRESET, { + unicodeArray: true, + unicodeArrayThreshold: 1 + }) + ); + + assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-z0-9]){4} *= *\['\\x62\\x61\\x72'\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /\[_0x([a-z0-9]){4}\[0x0\]\]\(\)\{\}/); + }); + + it('should not obfuscate method definition node with `constructor` key', () => { + let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, + Object.assign({}, NO_CUSTOM_NODES_PRESET) + ); + + assert.match(obfuscationResult.getObfuscatedCode(), /constructor\(\)\{\}/); + }); +}); diff --git a/test/index.spec.ts b/test/index.spec.ts index 719df662..7b4fa6c0 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -25,3 +25,4 @@ import './functional-tests/JavaScriptObfuscatorCLI.spec'; import './functional-tests/JavaScriptObfuscatorInternal.spec'; import './functional-tests/node-obfuscators/LiteralObfuscator.spec'; import './functional-tests/node-obfuscators/MemberExpressionObfuscator.spec'; +import './functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec';