Added more tests for identifier names cache code generation

This commit is contained in:
sanex
2021-05-30 15:49:55 +03:00
parent f3c4be22bf
commit e7d9c71964
6 changed files with 267 additions and 32 deletions
@@ -23,6 +23,7 @@ import { OptionsPreset } from '../../../src/enums/options/presets/OptionsPreset'
import { buildLargeCode } from '../../helpers/buildLargeCode';
import { getRegExpMatch } from '../../helpers/getRegExpMatch';
import { readFileAsString } from '../../helpers/readFileAsString';
import { TIdentifierNamesCache } from '../../../src/types/storages/TIdentifierNamesCache';
describe('JavaScriptObfuscator', () => {
describe('obfuscate', () => {
@@ -886,7 +887,7 @@ describe('JavaScriptObfuscator', () => {
obfuscatedCode = JavaScriptObfuscator.obfuscate(code).getObfuscatedCode();
});
it('Match #!: should correctly obfuscate a import', () => {
it('Match #1: should correctly obfuscate a import', () => {
assert.match(obfuscatedCode, importRegExp);
});
@@ -912,6 +913,113 @@ describe('JavaScriptObfuscator', () => {
});
});
describe('identifier names cache generation', () => {
describe('Variant #1: `identifierNamesCache` and `renameGlobal` options are enabled. Existing cache is passed', () => {
const expectedIdentifierNamesCache: TIdentifierNamesCache = {
foo: 'a',
bar: 'b',
baz: 'baz_value_from_cache'
};
let identifierNamesCache: TIdentifierNamesCache;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/identifier-names-cache-1.js');
identifierNamesCache = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
renameGlobals: true,
identifierNamesCache: {
baz: 'baz_value_from_cache'
},
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
}
).getIdentifierNamesCache();
});
it('Match #1: should correctly generate identifier names cache', () => {
assert.deepEqual(identifierNamesCache, expectedIdentifierNamesCache);
});
});
describe('Variant #2: `identifierNamesCache` and `renameGlobal` options are enabled', () => {
const expectedIdentifierNamesCache: TIdentifierNamesCache = {
foo: 'a',
bar: 'b'
};
let identifierNamesCache: TIdentifierNamesCache;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/identifier-names-cache-1.js');
identifierNamesCache = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
renameGlobals: true,
identifierNamesCache: {},
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
}
).getIdentifierNamesCache();
});
it('Match #1: should correctly generate identifier names cache', () => {
assert.deepEqual(identifierNamesCache, expectedIdentifierNamesCache);
});
});
describe('Variant #3: `identifierNamesCache` and `renameGlobal` options are enabled. Source code without global variables', () => {
const expectedIdentifierNamesCache: TIdentifierNamesCache = {};
let identifierNamesCache: TIdentifierNamesCache;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/identifier-names-cache-2.js');
identifierNamesCache = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
renameGlobals: true,
identifierNamesCache: {},
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
}
).getIdentifierNamesCache();
});
it('Match #1: should correctly generate identifier names cache', () => {
assert.deepEqual(identifierNamesCache, expectedIdentifierNamesCache);
});
});
describe('Variant #4: `identifierNamesCache` option is disabled', () => {
const expectedIdentifierNamesCache: TIdentifierNamesCache = null;
let identifierNamesCache: TIdentifierNamesCache;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/identifier-names-cache-1.js');
identifierNamesCache = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
renameGlobals: true,
identifierNamesCache: null,
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator
}
).getIdentifierNamesCache();
});
it('Match #1: should correctly generate identifier names cache', () => {
assert.deepEqual(identifierNamesCache, expectedIdentifierNamesCache);
});
});
});
describe('3.5k variables', function () {
this.timeout(200000);
@@ -0,0 +1,9 @@
function foo(arg) {
console.log(arg)
}
function bar() {
var bark = 2;
}
baz();
@@ -0,0 +1,9 @@
(function () {
function foo(arg) {
console.log(arg)
}
function bar() {
var bark = 2;
}
})();