JavaScriptObfuscatorInternal.spec.ts 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers';
  2. import { assert } from 'chai';
  3. import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade';
  4. import { IJavaScriptObfuscator } from '../../../src/interfaces/IJavaScriptObfsucator';
  5. import { IObfuscationResult } from '../../../src/interfaces/IObfuscationResult';
  6. import { NO_CUSTOM_NODES_PRESET } from '../../../src/options/presets/NoCustomNodes';
  7. import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade';
  8. describe('JavaScriptObfuscatorInternal', () => {
  9. describe(`setSourceMapUrl (url: string)`, () => {
  10. const code: string = 'var test = 1;';
  11. const sourceMapUrl: string = 'test.js.map';
  12. let javaScriptObfuscator: IJavaScriptObfuscator;
  13. describe('variant #1: default behaviour', () => {
  14. const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapUrl}`);
  15. let obfuscatedCode: string,
  16. sourceMapObject: any;
  17. before(() => {
  18. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  19. inversifyContainerFacade.load(
  20. '',
  21. {
  22. ...NO_CUSTOM_NODES_PRESET,
  23. sourceMap: true,
  24. sourceMapFileName: sourceMapUrl
  25. }
  26. );
  27. javaScriptObfuscator = inversifyContainerFacade
  28. .get<IJavaScriptObfuscator>(ServiceIdentifiers.IJavaScriptObfuscator);
  29. const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code);
  30. obfuscatedCode = obfuscationResult.getObfuscatedCode();
  31. sourceMapObject = JSON.parse(obfuscationResult.getSourceMap());
  32. });
  33. it('should link obfuscated code with source map', () => {
  34. assert.match(obfuscatedCode, regExp);
  35. });
  36. it('should return valid source map with `mappings` property', () => {
  37. assert.isOk(sourceMapObject.mappings);
  38. });
  39. });
  40. describe('variant #2: `sourceMapBaseUrl` is set', () => {
  41. const sourceMapBaseUrl: string = 'http://localhost:9000';
  42. const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapBaseUrl}/${sourceMapUrl}$`);
  43. let obfuscatedCode: string,
  44. sourceMapObject: any;
  45. before(() => {
  46. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  47. inversifyContainerFacade.load(
  48. '',
  49. {
  50. ...NO_CUSTOM_NODES_PRESET,
  51. sourceMap: true,
  52. sourceMapBaseUrl: sourceMapBaseUrl,
  53. sourceMapFileName: sourceMapUrl
  54. }
  55. );
  56. javaScriptObfuscator = inversifyContainerFacade
  57. .get<IJavaScriptObfuscator>(ServiceIdentifiers.IJavaScriptObfuscator);
  58. const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code);
  59. obfuscatedCode = obfuscationResult.getObfuscatedCode();
  60. sourceMapObject = JSON.parse(obfuscationResult.getSourceMap());
  61. });
  62. it('should properly add base url to source map import inside obfuscated code', () => {
  63. assert.match(obfuscatedCode, regExp);
  64. });
  65. it('should return valid source map with `mappings` property', () => {
  66. assert.isOk(sourceMapObject.mappings);
  67. });
  68. });
  69. });
  70. });