1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { assert } from 'chai';
- import { IObfuscationResult } from '../../../../../../src/interfaces/IObfuscationResult';
- import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade';
- import { NO_CUSTOM_NODES_PRESET } from '../../../../../../src/options/presets/NoCustomNodes';
- import { readFileAsString } from '../../../../../helpers/readFileAsString';
- describe('ConditionalCommentObfuscatingGuard', () => {
- describe('check (node: ESTree.Node): boolean', () => {
- describe('variant #1: `disable` conditional comment', () => {
- const obfuscatedVariableDeclarationRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x1;/;
- const ignoredVariableDeclarationRegExp: RegExp = /var *bar *= *2;/;
- const consoleLogRegExp: RegExp = /console.log\(_0x([a-f0-9]){4,6}\);/;
- let obfuscatedCode: string;
- beforeEach(() => {
- const code: string = readFileAsString(__dirname + '/fixtures/simple.js');
- const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
- code,
- {
- ...NO_CUSTOM_NODES_PRESET
- }
- );
- obfuscatedCode = obfuscationResult.getObfuscatedCode();
- });
- it('match #1: should obfuscate variable declaration before `disable` conditional comment', () => {
- assert.match(obfuscatedCode, obfuscatedVariableDeclarationRegExp);
- });
- it('match #2: should ignore variable declaration after `disable` conditional comment', () => {
- assert.match(obfuscatedCode, ignoredVariableDeclarationRegExp);
- });
- it('match #3: should obfuscate variable name in `console.log`', () => {
- assert.match(obfuscatedCode, consoleLogRegExp);
- });
- });
- describe('variant #2: `disable` and `enable` conditional comment', () => {
- const obfuscatedVariableDeclaration1RegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x1;/;
- const obfuscatedVariableDeclaration2RegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x3;/;
- const ignoredVariableDeclarationRegExp: RegExp = /var *bar *= *2;/;
- let obfuscatedCode: string;
- beforeEach(() => {
- const code: string = readFileAsString(__dirname + '/fixtures/disable-and-enable-comments.js');
- const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
- code,
- {
- ...NO_CUSTOM_NODES_PRESET
- }
- );
- obfuscatedCode = obfuscationResult.getObfuscatedCode();
- });
- it('match #1: should obfuscate variable declaration before `disable` conditional comment', () => {
- assert.match(obfuscatedCode, obfuscatedVariableDeclaration1RegExp);
- });
- it('match #2: should ignore variable declaration after `disable` conditional comment', () => {
- assert.match(obfuscatedCode, ignoredVariableDeclarationRegExp);
- });
- it('match #3: should obfuscate variable declaration after `enable` conditional comment', () => {
- assert.match(obfuscatedCode, obfuscatedVariableDeclaration2RegExp);
- });
- });
- });
- });
|