ConsoleOutputDisableExpressionNode.spec.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { assert } from 'chai';
  2. import { IObfuscationResult } from '../../../../src/interfaces/IObfuscationResult';
  3. import { NO_CUSTOM_NODES_PRESET } from '../../../../src/options/presets/NoCustomNodes';
  4. import { readFileAsString } from '../../../helpers/readFileAsString';
  5. import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscator';
  6. describe('ConsoleOutputDisableExpressionNode', () => {
  7. const consoleLogRegExp: RegExp = /_0x([a-f0-9]){4,6}\['console'\]\['log'\] *= *_0x([a-f0-9]){4,6};/u;
  8. const consoleErrorRegExp: RegExp = /_0x([a-f0-9]){4,6}\['console'\]\['error'\] *= *_0x([a-f0-9]){4,6};/u;
  9. const consoleWarnRegExp: RegExp = /_0x([a-f0-9]){4,6}\['console'\]\['warn'\] *= *_0x([a-f0-9]){4,6};/u;
  10. it('should correctly append `ConsoleOutputDisableExpressionNode` custom node into the obfuscated code if `disableConsoleOutput` option is set', () => {
  11. let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
  12. readFileAsString(__dirname + '/fixtures/simple-input.js'),
  13. {
  14. ...NO_CUSTOM_NODES_PRESET,
  15. disableConsoleOutput: true
  16. }
  17. );
  18. assert.match(obfuscationResult.getObfuscatedCode(), consoleLogRegExp);
  19. assert.match(obfuscationResult.getObfuscatedCode(), consoleErrorRegExp);
  20. assert.match(obfuscationResult.getObfuscatedCode(), consoleWarnRegExp);
  21. });
  22. it('should\'t append `ConsoleOutputDisableExpressionNode` custom node into the obfuscated code if `disableConsoleOutput` option is not set', () => {
  23. let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
  24. readFileAsString(__dirname + '/fixtures/simple-input.js'),
  25. {
  26. ...NO_CUSTOM_NODES_PRESET,
  27. disableConsoleOutput: false,
  28. stringArrayThreshold: 1
  29. }
  30. );
  31. assert.notMatch(obfuscationResult.getObfuscatedCode(), consoleLogRegExp);
  32. assert.notMatch(obfuscationResult.getObfuscatedCode(), consoleErrorRegExp);
  33. assert.notMatch(obfuscationResult.getObfuscatedCode(), consoleWarnRegExp);
  34. });
  35. });