StringArrayTemplate.spec.ts 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import { IObfuscationResult } from '../../../../../../src/interfaces/source-code/IObfuscationResult';
  4. import { NO_ADDITIONAL_NODES_PRESET } from '../../../../../../src/options/presets/NoCustomNodes';
  5. import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade';
  6. import { readFileAsString } from '../../../../../helpers/readFileAsString';
  7. describe('StringArrayTemplate', () => {
  8. describe('Prevailing kind of variables', () => {
  9. describe('`var` kind', () => {
  10. let obfuscatedCode: string,
  11. stringArrayRegExp: RegExp = /var (_0x(\w){4}) *= *\['.*'];/;
  12. beforeEach(() => {
  13. const code: string = readFileAsString(__dirname + '/fixtures/prevailing-kind-of-variables-var.js');
  14. const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
  15. code,
  16. {
  17. ...NO_ADDITIONAL_NODES_PRESET,
  18. stringArray: true,
  19. stringArrayThreshold: 1
  20. }
  21. );
  22. obfuscatedCode = obfuscationResult.getObfuscatedCode();
  23. });
  24. it('Should return correct kind of variables for string array', () => {
  25. assert.match(obfuscatedCode, stringArrayRegExp);
  26. });
  27. it('Should does not break on obfuscating', () => {
  28. assert.doesNotThrow(() => obfuscatedCode);
  29. });
  30. });
  31. describe('`const` kind', () => {
  32. let obfuscatedCode: string,
  33. stringArrayRegExp: RegExp = /const (_0x(\w){4}) *= *\['.*'];/;
  34. beforeEach(() => {
  35. const code: string = readFileAsString(__dirname + '/fixtures/prevailing-kind-of-variables-const.js');
  36. const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
  37. code,
  38. {
  39. ...NO_ADDITIONAL_NODES_PRESET,
  40. stringArray: true,
  41. stringArrayThreshold: 1
  42. }
  43. );
  44. obfuscatedCode = obfuscationResult.getObfuscatedCode();
  45. });
  46. it('Should return correct kind of variables for string array', () => {
  47. assert.match(obfuscatedCode, stringArrayRegExp);
  48. });
  49. it('Should does not break on obfuscating', () => {
  50. assert.doesNotThrow(() => obfuscatedCode);
  51. });
  52. });
  53. describe('`let` kind', () => {
  54. let obfuscatedCode: string,
  55. stringArrayRegExp: RegExp = /const (_0x(\w){4}) *= *\['.*'];/;
  56. beforeEach(() => {
  57. const code: string = readFileAsString(__dirname + '/fixtures/prevailing-kind-of-variables-let.js');
  58. const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
  59. code,
  60. {
  61. ...NO_ADDITIONAL_NODES_PRESET,
  62. stringArray: true,
  63. stringArrayThreshold: 1
  64. }
  65. );
  66. obfuscatedCode = obfuscationResult.getObfuscatedCode();
  67. });
  68. it('Should return correct kind of variables for string array', () => {
  69. assert.match(obfuscatedCode, stringArrayRegExp);
  70. });
  71. it('Should does not break on obfuscating', () => {
  72. assert.doesNotThrow(() => obfuscatedCode);
  73. });
  74. });
  75. });
  76. });