OptionsNormalizer.spec.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import { assert } from 'chai';
  2. import { TInputOptions } from '../../../src/types/options/TInputOptions';
  3. import { IOptions } from '../../../src/interfaces/options/IOptions';
  4. import { DEFAULT_PRESET } from '../../../src/preset-options/DefaultPreset';
  5. import { Options } from '../../../src/options/Options';
  6. import { OptionsNormalizer } from '../../../src/options/OptionsNormalizer';
  7. /**
  8. * @param optionsPreset
  9. * @returns {IOptions}
  10. */
  11. function getNormalizedOptions (optionsPreset: TInputOptions): TInputOptions {
  12. const options: IOptions = new Options(optionsPreset);
  13. return OptionsNormalizer.normalizeOptions(options);
  14. }
  15. describe('OptionsNormalizer', () => {
  16. describe('normalizeOptions (options: IObfuscatorOptions): IObfuscatorOptions', () => {
  17. let optionsPreset: TInputOptions,
  18. expectedOptionsPreset: TInputOptions;
  19. it('should normalize options preset: controlFlowFlatteningThresholdRule', () => {
  20. optionsPreset = {
  21. ...DEFAULT_PRESET,
  22. controlFlowFlattening: true,
  23. controlFlowFlatteningThreshold: 0
  24. };
  25. expectedOptionsPreset = {
  26. ...DEFAULT_PRESET,
  27. controlFlowFlattening: false,
  28. controlFlowFlatteningThreshold: 0
  29. };
  30. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  31. });
  32. it('should normalize options preset: domainLockRule', () => {
  33. optionsPreset = {
  34. ...DEFAULT_PRESET,
  35. domainLock: ['//localhost:9000', 'https://google.ru/abc?cde=fgh']
  36. };
  37. expectedOptionsPreset = {
  38. ...DEFAULT_PRESET,
  39. domainLock: ['localhost', 'google.ru']
  40. };
  41. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  42. });
  43. it('should normalize options preset: selfDefendingRule', () => {
  44. optionsPreset = {
  45. ...DEFAULT_PRESET,
  46. selfDefending: true,
  47. compact: false
  48. };
  49. expectedOptionsPreset = {
  50. ...DEFAULT_PRESET,
  51. selfDefending: true,
  52. compact: true
  53. };
  54. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  55. });
  56. it('should normalize options preset: sourceMapBaseUrlRule #1', () => {
  57. optionsPreset = {
  58. ...DEFAULT_PRESET,
  59. sourceMapBaseUrl: 'http://localhost:9000',
  60. };
  61. expectedOptionsPreset = {
  62. ...DEFAULT_PRESET,
  63. sourceMapBaseUrl: ''
  64. };
  65. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  66. });
  67. it('should normalize options preset: sourceMapBaseUrlRule #2', () => {
  68. optionsPreset = {
  69. ...DEFAULT_PRESET,
  70. sourceMapBaseUrl: 'http://localhost:9000',
  71. sourceMapFileName: '/outputSourceMapName.map'
  72. };
  73. expectedOptionsPreset = {
  74. ...DEFAULT_PRESET,
  75. sourceMapBaseUrl: 'http://localhost:9000/',
  76. sourceMapFileName: 'outputSourceMapName.js.map'
  77. };
  78. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  79. });
  80. it('should normalize options preset: sourceMapFileNameRule', () => {
  81. optionsPreset = {
  82. ...DEFAULT_PRESET,
  83. sourceMapBaseUrl: 'http://localhost:9000',
  84. sourceMapFileName: '//outputSourceMapName'
  85. };
  86. expectedOptionsPreset = {
  87. ...DEFAULT_PRESET,
  88. sourceMapBaseUrl: 'http://localhost:9000/',
  89. sourceMapFileName: 'outputSourceMapName.js.map'
  90. };
  91. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  92. });
  93. it('should normalize options preset: stringArrayRule', () => {
  94. optionsPreset = {
  95. ...DEFAULT_PRESET,
  96. stringArray: false,
  97. stringArrayEncoding: 'rc4',
  98. stringArrayThreshold: 0.5,
  99. rotateStringArray: true
  100. };
  101. expectedOptionsPreset = {
  102. ...DEFAULT_PRESET,
  103. stringArray: false,
  104. stringArrayEncoding: false,
  105. stringArrayThreshold: 0,
  106. rotateStringArray: false
  107. };
  108. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  109. });
  110. it('should normalize options preset: stringArrayEncodingRule', () => {
  111. optionsPreset = {
  112. ...DEFAULT_PRESET,
  113. stringArrayEncoding: true
  114. };
  115. expectedOptionsPreset = {
  116. ...DEFAULT_PRESET,
  117. stringArrayEncoding: 'base64'
  118. };
  119. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  120. });
  121. it('should normalize options preset: stringArrayThresholdRule', () => {
  122. optionsPreset = {
  123. ...DEFAULT_PRESET,
  124. rotateStringArray: true,
  125. stringArray: true,
  126. stringArrayThreshold: 0
  127. };
  128. expectedOptionsPreset = {
  129. ...DEFAULT_PRESET,
  130. rotateStringArray: false,
  131. stringArray: false,
  132. stringArrayThreshold: 0
  133. };
  134. assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset);
  135. });
  136. });
  137. });