From 273f0b331a356bcb27ff41434cd641e85b05d3f5 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Thu, 4 Jan 2018 19:52:49 +0300 Subject: [PATCH] Added more complicated test for nested objects. --- .../ObjectExpressionKeysTransformer.spec.ts | 37 ++++++++++++++++++- ...{nested-objects.js => nested-objects-1.js} | 0 .../fixtures/nested-objects-2.js | 14 +++++++ 3 files changed, 49 insertions(+), 2 deletions(-) rename test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/{nested-objects.js => nested-objects-1.js} (100%) create mode 100644 test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-2.js diff --git a/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts index d241a4aa..d9684380 100644 --- a/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts +++ b/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts @@ -40,7 +40,7 @@ describe('ObjectExpressionKeysTransformer', () => { }); }); - describe('variant #2: nested objects', () => { + describe('variant #2: nested objects #1', () => { const match: string = `` + `var *${variableMatch} *= *{};` + `${variableMatch}\\['foo'] *= *'bar';` + @@ -53,7 +53,40 @@ describe('ObjectExpressionKeysTransformer', () => { let obfuscatedCode: string; before(() => { - const code: string = readFileAsString(__dirname + '/fixtures/nested-objects.js'); + const code: string = readFileAsString(__dirname + '/fixtures/nested-objects-1.js'); + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + transformObjectKeys: true + } + ); + + obfuscatedCode = obfuscationResult.getObfuscatedCode(); + }); + + it('should correctly transform object keys', () => { + assert.match(obfuscatedCode, regExp); + }); + }); + + describe('variant #3: nested objects #2', () => { + const match: string = `` + + `var *${variableMatch} *= *{};` + + `${variableMatch}\\['foo'] *= *'bar';` + + `${variableMatch}\\['inner'] *= *{};` + + `${variableMatch}\\['ball'] *= *'door';` + + `${variableMatch}\\['inner']\\['baz'] *= *'bark';` + + `${variableMatch}\\['inner']\\['inner1'] *= *{};` + + `${variableMatch}\\['inner']\\['cow'] *= *'bear';` + + `${variableMatch}\\['inner']\\['inner1']\\['hawk'] *= *'geek';` + + ``; + const regExp: RegExp = new RegExp(match); + + let obfuscatedCode: string; + + before(() => { + const code: string = readFileAsString(__dirname + '/fixtures/nested-objects-2.js'); const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( code, { diff --git a/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects.js b/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-1.js similarity index 100% rename from test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects.js rename to test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-1.js diff --git a/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-2.js b/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-2.js new file mode 100644 index 00000000..c9021813 --- /dev/null +++ b/test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/nested-objects-2.js @@ -0,0 +1,14 @@ +(function(){ + var object = { + foo: 'bar', + inner: { + baz: 'bark', + inner1: { + hawk: 'geek' + }, + cow: 'bear', + + }, + ball: 'door', + }; +})(); \ No newline at end of file