diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.spec.ts index e7df603d..90bc1950 100644 --- a/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.spec.ts @@ -7,12 +7,12 @@ import { readFileAsString } from '../../../../../helpers/readFileAsString'; import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade'; describe('BaseIdentifierObfuscatingReplacer', () => { - describe('Base rule', () => { - describe('Variant #1: default behaviour', () => { + describe('Reserved names', () => { + describe('Variant #1: ignore local reserved names', () => { let obfuscatedCode: string; before(() => { - const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js'); + const code: string = readFileAsString(__dirname + '/fixtures/local-reserved-names.js'); obfuscatedCode = JavaScriptObfuscator.obfuscate( code, @@ -30,5 +30,29 @@ describe('BaseIdentifierObfuscatingReplacer', () => { ); }); }); + + describe('Variant #1: ignore global reserved names', () => { + let obfuscatedCode: string; + + before(() => { + const code: string = readFileAsString(__dirname + '/fixtures/global-reserved-names.js'); + + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + renameGlobals: true, + reservedNames: ['[abc|ghi]'] + } + ).getObfuscatedCode(); + }); + + it('Should keep reserved names without transformations when `reservedNames` option is enabled', () => { + assert.match( + obfuscatedCode, + /var *abc *= *0x1; *var *_0x([a-f0-9]){4,6} *= *0x2; *var *ghi *= *0x3;/ + ); + }); + }); }); }); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/global-reserved-names.js b/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/global-reserved-names.js new file mode 100644 index 00000000..22adb095 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/global-reserved-names.js @@ -0,0 +1,3 @@ +var abc = 1; +var def = 2; +var ghi = 3; \ No newline at end of file diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/simple-input.js b/test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/local-reserved-names.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/simple-input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/fixtures/local-reserved-names.js diff --git a/test/unit-tests/storages/ArrayStorage.spec.ts b/test/unit-tests/storages/ArrayStorage.spec.ts index 89ff27ea..0a578a20 100644 --- a/test/unit-tests/storages/ArrayStorage.spec.ts +++ b/test/unit-tests/storages/ArrayStorage.spec.ts @@ -74,6 +74,23 @@ describe('ArrayStorage', () => { }); }); + describe('getStorageId', () => { + const storageIdRegExp: RegExp = /^[a-zA-Z0-9]{6}$/; + + let storageId: string; + + before(() => { + storage = getStorageInstance(); + storage.set(storageKey, storageValue); + + storageId = storage.getStorageId(); + }); + + it('should return storage id', () => { + assert.match(storageId, storageIdRegExp); + }); + }); + describe('get', () => { describe('Variant #1: value exist', () => { const expectedValue: string = storageValue; @@ -194,27 +211,62 @@ describe('ArrayStorage', () => { }); describe('mergeWith', () => { - const secondStorageKey: number = 1; - const secondStorageValue: string = 'bar'; + describe('Base merge', () => { + const secondStorageKey: number = 1; + const secondStorageValue: string = 'bar'; - const expectedArray: string[] = [storageValue, secondStorageValue]; + const expectedArray: string[] = [storageValue, secondStorageValue]; - let array: string[]; + let array: string[]; - before(() => { - storage = getStorageInstance(); - storage.set(storageKey, storageValue); + before(() => { + storage = getStorageInstance(); + storage.set(storageKey, storageValue); - const secondStorage: IArrayStorage = getStorageInstance(); - secondStorage.set(secondStorageKey, secondStorageValue); + const secondStorage: IArrayStorage = getStorageInstance(); + secondStorage.set(secondStorageKey, secondStorageValue); - storage.mergeWith(secondStorage, false); + storage.mergeWith(secondStorage, false); - array = storage.getStorage(); + array = storage.getStorage(); + }); + + it('should merge two storages', () => { + assert.deepEqual(array, expectedArray); + }); }); - it('should merge two storages', () => { - assert.deepEqual(array, expectedArray); + describe('Merge with storage id', () => { + const secondStorageKey: number = 1; + const secondStorageValue: string = 'bar'; + + const expectedArray: string[] = [storageValue, secondStorageValue]; + + let array: string[]; + let storageId: string; + let expectedStorageId: string; + + before(() => { + storage = getStorageInstance(); + storage.set(storageKey, storageValue); + + const secondStorage: IArrayStorage = getStorageInstance(); + expectedStorageId = secondStorage.getStorageId(); + secondStorage.set(secondStorageKey, secondStorageValue); + + storage.mergeWith(secondStorage, true); + + storageId = storage.getStorageId(); + array = storage.getStorage(); + }); + + it('should update storage id', () => { + assert.deepEqual(storageId, expectedStorageId); + }); + + it('should merge two storages', () => { + assert.deepEqual(array, expectedArray); + }); }); }); });