Files
javascript-obfuscator-javas…/test/unit-tests/OptionsNormalizer.spec.ts
T

137 lines
5.0 KiB
TypeScript

import { IInputOptions } from '../../src/interfaces/IInputOptions';
import { IOptions } from '../../src/interfaces/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);
});
});
});