SourceMapCorrector.spec.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { IObfuscationResult } from '../../src/interfaces/IObfuscationResult';
  2. import { ISourceMapCorrector } from '../../src/interfaces/ISourceMapCorrector';
  3. import { TSourceMapMode } from '../../src/types/TSourceMapMode';
  4. import { SourceMapMode } from '../../src/enums/SourceMapMode';
  5. import { ObfuscationResult } from '../../src/ObfuscationResult';
  6. import { SourceMapCorrector } from '../../src/SourceMapCorrector';
  7. const assert: Chai.AssertStatic = require('chai').assert;
  8. /**
  9. * @param obfuscatedCode
  10. * @param sourceMap
  11. * @param sourceMapUrl
  12. * @param sourceMapMode
  13. */
  14. function getCorrectedObfuscationResult (
  15. obfuscatedCode: string,
  16. sourceMap: string,
  17. sourceMapUrl: string,
  18. sourceMapMode: TSourceMapMode
  19. ): IObfuscationResult {
  20. let obfuscationResult: IObfuscationResult = new ObfuscationResult(obfuscatedCode, sourceMap),
  21. sourceMapCorrector: ISourceMapCorrector = new SourceMapCorrector(
  22. obfuscationResult,
  23. sourceMapUrl,
  24. sourceMapMode
  25. );
  26. return sourceMapCorrector.correct();
  27. }
  28. describe('SourceMapCorrector', () => {
  29. describe('correct (): IObfuscationResult', () => {
  30. let expectedObfuscationResult: IObfuscationResult,
  31. obfuscatedCode: string = 'var test = 1;',
  32. sourceMap: string = 'test';
  33. it('should return untouched obfuscated code if source map does not exist', () => {
  34. expectedObfuscationResult = getCorrectedObfuscationResult(obfuscatedCode, '', '', SourceMapMode.Separate);
  35. assert.equal(expectedObfuscationResult.getObfuscatedCode(), obfuscatedCode);
  36. });
  37. describe('if source map is set and source map mode is `inline`', () => {
  38. before (() => {
  39. expectedObfuscationResult = getCorrectedObfuscationResult(
  40. obfuscatedCode,
  41. sourceMap,
  42. '',
  43. SourceMapMode.Inline
  44. );
  45. });
  46. it('should add source map to obfuscated code as base64 encoded string', () => {
  47. assert.match(expectedObfuscationResult.getObfuscatedCode(), /data:application\/json;base64/);
  48. });
  49. });
  50. it('should add source map import to obfuscated code if source map mode is `separate`', () => {
  51. expectedObfuscationResult = getCorrectedObfuscationResult(
  52. obfuscatedCode,
  53. sourceMap,
  54. 'output.js.map',
  55. SourceMapMode.Separate
  56. );
  57. assert.match(expectedObfuscationResult.getObfuscatedCode(), /sourceMappingURL=output\.js\.map/);
  58. });
  59. it('should not touch obfuscated code if source map mode is `separate` and `sourceMapUrl` is not set', () => {
  60. expectedObfuscationResult = getCorrectedObfuscationResult(
  61. obfuscatedCode,
  62. sourceMap,
  63. '',
  64. SourceMapMode.Separate
  65. );
  66. assert.equal(expectedObfuscationResult.getObfuscatedCode(), obfuscatedCode);
  67. });
  68. });
  69. });