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('LiteralObfuscator', () => { describe('obfuscation of literal node with string value', () => { it('should replace literal node value with unicode value without encoding to base64', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( `var test = 'test';`, Object.assign({}, NO_CUSTOM_NODES_PRESET) ); assert.match(obfuscationResult.getObfuscatedCode(), /^var *test *= *'\\x74\\x65\\x73\\x74';$/); }); it('should replace literal node value with unicode value with encoding to base64', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( `var test = 'test';`, Object.assign({}, NO_CUSTOM_NODES_PRESET, { encodeUnicodeLiterals: true, unicodeArray: true, unicodeArrayThreshold: 1 }) ); assert.match(obfuscationResult.getObfuscatedCode(), /^var *_0x([a-z0-9]){4} *= *\['\\x64\\x47\\x56\\x7a\\x64\\x41\\x3d\\x3d'\];/); assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/); }); }); it('should obfuscate literal node with boolean value', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( `var test = true;`, Object.assign({}, NO_CUSTOM_NODES_PRESET, { encodeUnicodeLiterals: true, unicodeArray: true, unicodeArrayThreshold: 1 }) ); assert.match(obfuscationResult.getObfuscatedCode(), /^var *test *= *!!\[\];$/); }); it('should obfuscate literal node with number value', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( `var test = 0;`, Object.assign({}, NO_CUSTOM_NODES_PRESET, { encodeUnicodeLiterals: true, unicodeArray: true, unicodeArrayThreshold: 1 }) ); assert.match(obfuscationResult.getObfuscatedCode(), /^var *test *= *0x0;$/); }); });