import { IInputOptions } from '../../src/interfaces/options/IInputOptions'; import { IOptions } from '../../src/interfaces/options/IOptions'; import { DEFAULT_PRESET } from '../../src/preset-options/DefaultPreset'; import { Options } from '../../src/options/Options'; import { OptionsNormalizer } from '../../src/options/OptionsNormalizer'; const assert: Chai.AssertStatic = require('chai').assert; /** * @param optionsPreset * @returns {IOptions} */ function getNormalizedOptions (optionsPreset: IInputOptions): IInputOptions { const options: IOptions = new Options(optionsPreset); return OptionsNormalizer.normalizeOptions(options); } describe('OptionsNormalizer', () => { describe('normalizeOptions (options: IObfuscatorOptions): IObfuscatorOptions', () => { let optionsPreset: IInputOptions, expectedOptionsPreset: IInputOptions; it('should normalize options preset: domainLockRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { domainLock: ['//localhost:9000', 'https://google.ru/abc?cde=fgh'] }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { domainLock: ['localhost', 'google.ru'] }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: selfDefendingRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { compact: false }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { compact: true }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: sourceMapBaseUrlRule #1', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: 'http://localhost:9000', }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: '', }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: sourceMapBaseUrlRule #2', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: 'http://localhost:9000', sourceMapFileName: '/outputSourceMapName.map' }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: 'http://localhost:9000/', sourceMapFileName: 'outputSourceMapName.js.map' }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: sourceMapFileNameRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: 'http://localhost:9000', sourceMapFileName: '//outputSourceMapName', }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { sourceMapBaseUrl: 'http://localhost:9000/', sourceMapFileName: 'outputSourceMapName.js.map', }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: stringArrayRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { stringArray: false, stringArrayEncoding: 'rc4', stringArrayThreshold: 0.5, rotateStringArray: true }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { stringArray: false, stringArrayEncoding: false, stringArrayThreshold: 0, rotateStringArray: false }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: stringArrayEncodingRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { stringArrayEncoding: true }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { stringArrayEncoding: 'base64' }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); it('should normalize options preset: stringArrayThresholdRule', () => { optionsPreset = Object.assign({}, DEFAULT_PRESET, { rotateStringArray: true, stringArray: true, stringArrayThreshold: 0 }); expectedOptionsPreset = Object.assign({}, DEFAULT_PRESET, { rotateStringArray: false, stringArray: false, stringArrayThreshold: 0 }); assert.deepEqual(getNormalizedOptions(optionsPreset), expectedOptionsPreset); }); }); });