StringArrayRotateFunctionCodeHelper.spec.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { assert } from 'chai';
  2. import { NO_ADDITIONAL_NODES_PRESET } from '../../../../src/options/presets/NoCustomNodes';
  3. import { readFileAsString } from '../../../helpers/readFileAsString';
  4. import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscatorFacade';
  5. describe('StringArrayRotateFunctionCodeHelper', () => {
  6. const regExp: RegExp = /while *\(-- *_0x([a-f0-9]){4,6}\) *\{/;
  7. describe('`stringArray` option is set', () => {
  8. let obfuscatedCode: string;
  9. before(() => {
  10. const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
  11. obfuscatedCode = JavaScriptObfuscator.obfuscate(
  12. code,
  13. {
  14. ...NO_ADDITIONAL_NODES_PRESET,
  15. rotateStringArray: true,
  16. stringArray: true,
  17. stringArrayThreshold: 1
  18. }
  19. ).getObfuscatedCode();
  20. });
  21. it('should correctly append code helper into the obfuscated code', () => {
  22. assert.match(obfuscatedCode, regExp);
  23. });
  24. });
  25. describe('`stringArray` option isn\'t set', () => {
  26. let obfuscatedCode: string;
  27. before(() => {
  28. const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
  29. obfuscatedCode = JavaScriptObfuscator.obfuscate(
  30. code,
  31. {
  32. ...NO_ADDITIONAL_NODES_PRESET,
  33. rotateStringArray: false,
  34. stringArray: true,
  35. stringArrayThreshold: 1
  36. }
  37. ).getObfuscatedCode();
  38. });
  39. it('shouldn\'t append code helper into the obfuscated code', () => {
  40. assert.notMatch(obfuscatedCode, regExp);
  41. });
  42. });
  43. });