SelfDefendingCodeHelper.spec.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { assert } from 'chai';
  2. import { IdentifierNamesGenerator } from '../../../../src/enums/generators/identifier-names-generators/IdentifierNamesGenerator';
  3. import { NO_ADDITIONAL_NODES_PRESET } from '../../../../src/options/presets/NoCustomNodes';
  4. import { readFileAsString } from '../../../helpers/readFileAsString';
  5. import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscatorFacade';
  6. describe('SelfDefendingCodeHelper', () => {
  7. describe('`selfDefending` option is set', () => {
  8. describe('Variant #1: identifier names when appended inside global scope', () => {
  9. const regExp: RegExp = /var foo[a-z] *= *foo[a-z]\(this, *function *\(\) *{/;
  10. let obfuscatedCode: string;
  11. before(() => {
  12. const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
  13. obfuscatedCode = JavaScriptObfuscator.obfuscate(
  14. code,
  15. {
  16. ...NO_ADDITIONAL_NODES_PRESET,
  17. identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
  18. identifiersPrefix: 'foo',
  19. selfDefending: true
  20. }
  21. ).getObfuscatedCode();
  22. });
  23. it('should add prefix to the helper identifiers inside global scope', () => {
  24. assert.match(obfuscatedCode, regExp);
  25. });
  26. });
  27. describe('Variant #2: identifier names when appended inside function scope', () => {
  28. const regExp: RegExp = /var [a-z] *= *[a-z]\(this, *function *\(\) *{/;
  29. let obfuscatedCode: string;
  30. before(() => {
  31. const code: string = readFileAsString(__dirname + '/fixtures/append-inside-function-scope.js');
  32. obfuscatedCode = JavaScriptObfuscator.obfuscate(
  33. code,
  34. {
  35. ...NO_ADDITIONAL_NODES_PRESET,
  36. identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
  37. identifiersPrefix: 'foo',
  38. selfDefending: true
  39. }
  40. ).getObfuscatedCode();
  41. });
  42. it('should not add prefix to the helper identifiers inside global scope', () => {
  43. assert.match(obfuscatedCode, regExp);
  44. });
  45. });
  46. });
  47. });