|
@@ -12,6 +12,8 @@ import { JavaScriptObfuscator } from '../../../src/JavaScriptObfuscatorFacade';
|
|
describe('JavaScriptObfuscatorCLI', function (): void {
|
|
describe('JavaScriptObfuscatorCLI', function (): void {
|
|
this.timeout(100000);
|
|
this.timeout(100000);
|
|
|
|
|
|
|
|
+ const expectedError: RegExp = /Given input path must be a valid/;
|
|
|
|
+
|
|
const fixturesDirName: string = 'test/fixtures';
|
|
const fixturesDirName: string = 'test/fixtures';
|
|
const fixtureFileName: string = 'sample.js';
|
|
const fixtureFileName: string = 'sample.js';
|
|
const fixtureFilePath: string = `${fixturesDirName}/${fixtureFileName}`;
|
|
const fixtureFilePath: string = `${fixturesDirName}/${fixtureFileName}`;
|
|
@@ -58,7 +60,7 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
|
|
|
|
describe('`--output` option isn\'t set', () => {
|
|
describe('`--output` option isn\'t set', () => {
|
|
- describe('variant #1: default behaviour', () => {
|
|
|
|
|
|
+ describe('Variant #1: default behaviour', () => {
|
|
let outputFixturesFilePath: string,
|
|
let outputFixturesFilePath: string,
|
|
isFileExist: boolean;
|
|
isFileExist: boolean;
|
|
|
|
|
|
@@ -83,9 +85,7 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- describe('variant #2: invalid input file path', () => {
|
|
|
|
- const expectedError: ReferenceErrorConstructor = ReferenceError;
|
|
|
|
-
|
|
|
|
|
|
+ describe('Variant #2: invalid input file path', () => {
|
|
let testFunc: () => void;
|
|
let testFunc: () => void;
|
|
|
|
|
|
before(() => {
|
|
before(() => {
|
|
@@ -101,8 +101,8 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- describe('variant #3: input file extension isn\'t `.js`', () => {
|
|
|
|
- const expectedError: ReferenceErrorConstructor = ReferenceError;
|
|
|
|
|
|
+ describe('Variant #3: input file extension isn\'t `.js`', () => {
|
|
|
|
+ const expectedError: RegExp = /Given input path must be a valid/;
|
|
const outputFileName: string = 'sample-obfuscated.ts';
|
|
const outputFileName: string = 'sample-obfuscated.ts';
|
|
const outputFilePath: string = `${outputDirName}/${outputFileName}`;
|
|
const outputFilePath: string = `${outputDirName}/${outputFileName}`;
|
|
|
|
|
|
@@ -127,199 +127,378 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ describe('--exclude option', () => {
|
|
|
|
+ describe('Variant #1: --exclude option is pointed on different file', () => {
|
|
|
|
+ let isFileExist: boolean;
|
|
|
|
+
|
|
|
|
+ before(() => {
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ fixtureFilePath,
|
|
|
|
+ '--output',
|
|
|
|
+ outputFilePath,
|
|
|
|
+ '--exclude',
|
|
|
|
+ '**/foo.js'
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+ isFileExist = fs.existsSync(outputFilePath);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it('should create file with obfuscated code in `--output` directory', () => {
|
|
|
|
+ assert.equal(isFileExist, true);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ describe('Variant #2: --exclude option is pointed on input file', () => {
|
|
|
|
+ let testFunc: () => void;
|
|
|
|
+
|
|
|
|
+ before(() => {
|
|
|
|
+ testFunc = () => JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ fixtureFilePath,
|
|
|
|
+ '--output',
|
|
|
|
+ outputFilePath,
|
|
|
|
+ '--exclude',
|
|
|
|
+ '**/sample.js'
|
|
|
|
+ ]);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it('should throw an error', () => {
|
|
|
|
+ assert.throws(testFunc, expectedError);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ after(() => {
|
|
|
|
+ fs.unlinkSync(outputFilePath);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
});
|
|
});
|
|
|
|
|
|
describe('Variant #2: obfuscation of directory', () => {
|
|
describe('Variant #2: obfuscation of directory', () => {
|
|
- const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
- const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
- const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
- const outputFileName3: string = 'baz-obfuscated.js';
|
|
|
|
- const readFileEncoding: string = 'utf8';
|
|
|
|
- const regExp1: RegExp = /^var *a1_0x(\w){4,6} *= *0x1;$/;
|
|
|
|
- const regExp2: RegExp = /^var *a0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
-
|
|
|
|
- let outputFixturesFilePath1: string,
|
|
|
|
- outputFixturesFilePath2: string,
|
|
|
|
- outputFixturesFilePath3: string,
|
|
|
|
- isFileExist1: boolean,
|
|
|
|
- isFileExist2: boolean,
|
|
|
|
- isFileExist3: boolean,
|
|
|
|
- fileContent1: string,
|
|
|
|
- fileContent2: string;
|
|
|
|
|
|
+ describe(`Variant #1: default behaviour`, () => {
|
|
|
|
+ const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
+ const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
+ const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
+ const outputFileName3: string = 'baz-obfuscated.js';
|
|
|
|
+ const readFileEncoding: string = 'utf8';
|
|
|
|
+ const regExp1: RegExp = /^var *a1_0x(\w){4,6} *= *0x1;$/;
|
|
|
|
+ const regExp2: RegExp = /^var *a0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
+
|
|
|
|
+ let outputFixturesFilePath1: string,
|
|
|
|
+ outputFixturesFilePath2: string,
|
|
|
|
+ outputFixturesFilePath3: string,
|
|
|
|
+ isFileExist1: boolean,
|
|
|
|
+ isFileExist2: boolean,
|
|
|
|
+ isFileExist3: boolean,
|
|
|
|
+ fileContent1: string,
|
|
|
|
+ fileContent2: string;
|
|
|
|
|
|
- before(() => {
|
|
|
|
- outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
- outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
- outputFixturesFilePath3 = `${directoryPath}/${outputFileName3}`;
|
|
|
|
|
|
+ before(() => {
|
|
|
|
+ outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
+ outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
+ outputFixturesFilePath3 = `${directoryPath}/${outputFileName3}`;
|
|
|
|
|
|
- JavaScriptObfuscator.runCLI([
|
|
|
|
- 'node',
|
|
|
|
- 'javascript-obfuscator',
|
|
|
|
- directoryPath,
|
|
|
|
- '--rename-globals',
|
|
|
|
- 'true'
|
|
|
|
- ]);
|
|
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ directoryPath,
|
|
|
|
+ '--rename-globals',
|
|
|
|
+ 'true'
|
|
|
|
+ ]);
|
|
|
|
|
|
- isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
- isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
- isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
|
|
+ isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
+ isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
+ isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
|
|
- fileContent1 = fs.readFileSync(outputFixturesFilePath1, readFileEncoding);
|
|
|
|
- fileContent2 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
- });
|
|
|
|
|
|
+ fileContent1 = fs.readFileSync(outputFixturesFilePath1, readFileEncoding);
|
|
|
|
+ fileContent2 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`should create file \`${outputFileName1}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
- assert.equal(isFileExist1, true);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`should create file \`${outputFileName1}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist1, true);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
- assert.equal(isFileExist2, true);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist2, true);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`shouldn't create file \`${outputFileName3}\` in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
- assert.equal(isFileExist3, false);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`shouldn't create file \`${outputFileName3}\` in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist3, false);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
- assert.match(fileContent1, regExp1);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent1, regExp1);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`match #2: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
- assert.match(fileContent2, regExp2);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`match #2: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent2, regExp2);
|
|
|
|
+ });
|
|
|
|
|
|
- after(() => {
|
|
|
|
- rimraf.sync(outputFixturesFilePath1);
|
|
|
|
- rimraf.sync(outputFixturesFilePath2);
|
|
|
|
|
|
+ after(() => {
|
|
|
|
+ rimraf.sync(outputFixturesFilePath1);
|
|
|
|
+ rimraf.sync(outputFixturesFilePath2);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
- });
|
|
|
|
|
|
|
|
- describe('Variant #3: obfuscation of directory with `identifiersPrefix` option value', () => {
|
|
|
|
- const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
- const identifiersPrefix: string = 'foo';
|
|
|
|
- const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
- const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
- const readFileEncoding: string = 'utf8';
|
|
|
|
- const regExp1: RegExp = /^var *foo1_0x(\w){4,6} *= *0x1;$/;
|
|
|
|
- const regExp2: RegExp = /^var *foo0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
-
|
|
|
|
- let outputFixturesFilePath1: string,
|
|
|
|
- outputFixturesFilePath2: string,
|
|
|
|
- isFileExist1: boolean,
|
|
|
|
- isFileExist2: boolean,
|
|
|
|
- fileContent1: string,
|
|
|
|
- fileContent2: string;
|
|
|
|
|
|
+ describe('Variant #2: obfuscation of directory with `identifiersPrefix` option value', () => {
|
|
|
|
+ const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
+ const identifiersPrefix: string = 'foo';
|
|
|
|
+ const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
+ const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
+ const readFileEncoding: string = 'utf8';
|
|
|
|
+ const regExp1: RegExp = /^var *foo1_0x(\w){4,6} *= *0x1;$/;
|
|
|
|
+ const regExp2: RegExp = /^var *foo0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
|
|
- before(() => {
|
|
|
|
- outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
- outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
|
|
+ let outputFixturesFilePath1: string,
|
|
|
|
+ outputFixturesFilePath2: string,
|
|
|
|
+ isFileExist1: boolean,
|
|
|
|
+ isFileExist2: boolean,
|
|
|
|
+ fileContent1: string,
|
|
|
|
+ fileContent2: string;
|
|
|
|
|
|
- JavaScriptObfuscator.runCLI([
|
|
|
|
- 'node',
|
|
|
|
- 'javascript-obfuscator',
|
|
|
|
- directoryPath,
|
|
|
|
- '--identifiers-prefix',
|
|
|
|
- identifiersPrefix,
|
|
|
|
- '--rename-globals',
|
|
|
|
- 'true'
|
|
|
|
- ]);
|
|
|
|
|
|
+ before(() => {
|
|
|
|
+ outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
+ outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
|
|
- isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
- isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ directoryPath,
|
|
|
|
+ '--identifiers-prefix',
|
|
|
|
+ identifiersPrefix,
|
|
|
|
+ '--rename-globals',
|
|
|
|
+ 'true'
|
|
|
|
+ ]);
|
|
|
|
|
|
- fileContent1 = fs.readFileSync(outputFixturesFilePath1, readFileEncoding);
|
|
|
|
- fileContent2 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
- });
|
|
|
|
|
|
+ isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
+ isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
|
|
- it(`should create file \`${outputFileName1}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
- assert.equal(isFileExist1, true);
|
|
|
|
- });
|
|
|
|
|
|
+ fileContent1 = fs.readFileSync(outputFixturesFilePath1, readFileEncoding);
|
|
|
|
+ fileContent2 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
- assert.equal(isFileExist2, true);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`should create file \`${outputFileName1}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist1, true);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
- assert.match(fileContent1, regExp1);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist2, true);
|
|
|
|
+ });
|
|
|
|
|
|
- it(`match #2: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
- assert.match(fileContent2, regExp2);
|
|
|
|
- });
|
|
|
|
|
|
+ it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent1, regExp1);
|
|
|
|
+ });
|
|
|
|
|
|
- after(() => {
|
|
|
|
- rimraf.sync(outputFixturesFilePath1);
|
|
|
|
- rimraf.sync(outputFixturesFilePath2);
|
|
|
|
|
|
+ it(`match #2: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent2, regExp2);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ after(() => {
|
|
|
|
+ rimraf.sync(outputFixturesFilePath1);
|
|
|
|
+ rimraf.sync(outputFixturesFilePath2);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
- });
|
|
|
|
|
|
|
|
- describe('Variant #4: obfuscation of directory with `output` option', () => {
|
|
|
|
- const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
- const outputDirectoryName: string = 'obfuscated';
|
|
|
|
- const outputDirectoryPath: string = `${directoryPath}/${outputDirectoryName}`;
|
|
|
|
- const outputFileName1: string = 'foo.js';
|
|
|
|
- const outputFileName2: string = 'bar.js';
|
|
|
|
- const outputFileName3: string = 'baz.js';
|
|
|
|
-
|
|
|
|
- let outputFixturesFilePath1: string,
|
|
|
|
- outputFixturesFilePath2: string,
|
|
|
|
- outputFixturesFilePath3: string,
|
|
|
|
- isFileExist1: boolean,
|
|
|
|
- isFileExist2: boolean,
|
|
|
|
- isFileExist3: boolean;
|
|
|
|
|
|
+ describe('Variant #3: obfuscation of directory with `output` option', () => {
|
|
|
|
+ const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
+ const outputDirectoryName: string = 'obfuscated';
|
|
|
|
+ const outputDirectoryPath: string = `${directoryPath}/${outputDirectoryName}`;
|
|
|
|
+ const outputFileName1: string = 'foo.js';
|
|
|
|
+ const outputFileName2: string = 'bar.js';
|
|
|
|
+ const outputFileName3: string = 'baz.js';
|
|
|
|
|
|
- before(() => {
|
|
|
|
- outputFixturesFilePath1 = `${outputDirectoryPath}/${directoryPath}/${outputFileName1}`;
|
|
|
|
- outputFixturesFilePath2 = `${outputDirectoryPath}/${directoryPath}/${outputFileName2}`;
|
|
|
|
- outputFixturesFilePath3 = `${outputDirectoryPath}/${directoryPath}/${outputFileName3}`;
|
|
|
|
|
|
+ let outputFixturesFilePath1: string,
|
|
|
|
+ outputFixturesFilePath2: string,
|
|
|
|
+ outputFixturesFilePath3: string,
|
|
|
|
+ isFileExist1: boolean,
|
|
|
|
+ isFileExist2: boolean,
|
|
|
|
+ isFileExist3: boolean;
|
|
|
|
|
|
- JavaScriptObfuscator.runCLI([
|
|
|
|
- 'node',
|
|
|
|
- 'javascript-obfuscator',
|
|
|
|
- directoryPath,
|
|
|
|
- '--output',
|
|
|
|
- outputDirectoryPath
|
|
|
|
- ]);
|
|
|
|
|
|
+ before(() => {
|
|
|
|
+ outputFixturesFilePath1 = `${outputDirectoryPath}/${directoryPath}/${outputFileName1}`;
|
|
|
|
+ outputFixturesFilePath2 = `${outputDirectoryPath}/${directoryPath}/${outputFileName2}`;
|
|
|
|
+ outputFixturesFilePath3 = `${outputDirectoryPath}/${directoryPath}/${outputFileName3}`;
|
|
|
|
+
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ directoryPath,
|
|
|
|
+ '--output',
|
|
|
|
+ outputDirectoryPath
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+ isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
+ isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
+ isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
+ });
|
|
|
|
|
|
- isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
- isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
- isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
|
|
+ it(
|
|
|
|
+ `should create file \`${outputFileName1}\` with obfuscated code in ` +
|
|
|
|
+ `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
+ () => {
|
|
|
|
+ assert.equal(isFileExist1, true);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ it(
|
|
|
|
+ `should create file \`${outputFileName2}\` with obfuscated code in ` +
|
|
|
|
+ `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
+ () => {
|
|
|
|
+ assert.equal(isFileExist2, true);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ it(
|
|
|
|
+ `shouldn't create file \`${outputFileName3}\` in ` +
|
|
|
|
+ `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
+ () => {
|
|
|
|
+ assert.equal(isFileExist3, false);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ after(() => {
|
|
|
|
+ rimraf.sync(outputDirectoryPath);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
|
|
|
|
- it(
|
|
|
|
- `should create file \`${outputFileName1}\` with obfuscated code in ` +
|
|
|
|
- `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
- () => {
|
|
|
|
- assert.equal(isFileExist1, true);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ describe('Variant #4: --exclude option', () => {
|
|
|
|
+ describe('Variant #1: --exclude option is pointed on different file', () => {
|
|
|
|
+ const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
+ const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
+ const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
+ const outputFileName3: string = 'baz-obfuscated.js';
|
|
|
|
+ const readFileEncoding: string = 'utf8';
|
|
|
|
+ const regExp1: RegExp = /^var *a1_0x(\w){4,6} *= *0x1;$/;
|
|
|
|
+ const regExp2: RegExp = /^var *a0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
+
|
|
|
|
+ let outputFixturesFilePath1: string,
|
|
|
|
+ outputFixturesFilePath2: string,
|
|
|
|
+ outputFixturesFilePath3: string,
|
|
|
|
+ isFileExist1: boolean,
|
|
|
|
+ isFileExist2: boolean,
|
|
|
|
+ isFileExist3: boolean,
|
|
|
|
+ fileContent1: string,
|
|
|
|
+ fileContent2: string;
|
|
|
|
|
|
- it(
|
|
|
|
- `should create file \`${outputFileName2}\` with obfuscated code in ` +
|
|
|
|
- `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
- () => {
|
|
|
|
- assert.equal(isFileExist2, true);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ before(() => {
|
|
|
|
+ outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
+ outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
+ outputFixturesFilePath3 = `${directoryPath}/${outputFileName3}`;
|
|
|
|
|
|
- it(
|
|
|
|
- `shouldn't create file \`${outputFileName3}\` in ` +
|
|
|
|
- `\`${fixturesDirName}/${outputDirectoryName}\` directory`,
|
|
|
|
- () => {
|
|
|
|
- assert.equal(isFileExist3, false);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ directoryPath,
|
|
|
|
+ '--exclude',
|
|
|
|
+ '**/bark.js',
|
|
|
|
+ '--rename-globals',
|
|
|
|
+ 'true'
|
|
|
|
+ ]);
|
|
|
|
|
|
- after(() => {
|
|
|
|
- rimraf.sync(outputDirectoryPath);
|
|
|
|
|
|
+ isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
+ isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
+ isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
+
|
|
|
|
+ fileContent1 = fs.readFileSync(outputFixturesFilePath1, readFileEncoding);
|
|
|
|
+ fileContent2 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`should create file \`${outputFileName1}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist1, true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist2, true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`shouldn't create file \`${outputFileName3}\` in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist3, false);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent1, regExp1);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`match #2: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent2, regExp2);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ after(() => {
|
|
|
|
+ rimraf.sync(outputFixturesFilePath1);
|
|
|
|
+ rimraf.sync(outputFixturesFilePath2);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ describe('Variant #2: --exclude option is pointed on file under obfuscating directory', () => {
|
|
|
|
+ const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
|
|
|
|
+ const outputFileName1: string = 'foo-obfuscated.js';
|
|
|
|
+ const outputFileName2: string = 'bar-obfuscated.js';
|
|
|
|
+ const outputFileName3: string = 'baz-obfuscated.js';
|
|
|
|
+ const readFileEncoding: string = 'utf8';
|
|
|
|
+ const regExp1: RegExp = /^var *a0_0x(\w){4,6} *= *0x2;$/;
|
|
|
|
+
|
|
|
|
+ let outputFixturesFilePath1: string,
|
|
|
|
+ outputFixturesFilePath2: string,
|
|
|
|
+ outputFixturesFilePath3: string,
|
|
|
|
+ isFileExist1: boolean,
|
|
|
|
+ isFileExist2: boolean,
|
|
|
|
+ isFileExist3: boolean,
|
|
|
|
+ fileContent1: string;
|
|
|
|
+
|
|
|
|
+ before(() => {
|
|
|
|
+ outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
|
|
|
|
+ outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;
|
|
|
|
+ outputFixturesFilePath3 = `${directoryPath}/${outputFileName3}`;
|
|
|
|
+
|
|
|
|
+ JavaScriptObfuscator.runCLI([
|
|
|
|
+ 'node',
|
|
|
|
+ 'javascript-obfuscator',
|
|
|
|
+ directoryPath,
|
|
|
|
+ '--exclude',
|
|
|
|
+ '**/foo.js',
|
|
|
|
+ '--rename-globals',
|
|
|
|
+ 'true'
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+ isFileExist1 = fs.existsSync(outputFixturesFilePath1);
|
|
|
|
+ isFileExist2 = fs.existsSync(outputFixturesFilePath2);
|
|
|
|
+ isFileExist3 = fs.existsSync(outputFixturesFilePath3);
|
|
|
|
+
|
|
|
|
+ fileContent1 = fs.readFileSync(outputFixturesFilePath2, readFileEncoding);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`shouldn't create file \`${outputFileName1}\` in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist1, false);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist2, true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`shouldn't create file \`${outputFileName3}\` in \`${fixturesDirName}\` directory`, () => {
|
|
|
|
+ assert.equal(isFileExist3, false);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(`match #1: should create file with obfuscated code with prefixed identifier`, () => {
|
|
|
|
+ assert.match(fileContent1, regExp1);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ after(() => {
|
|
|
|
+ rimraf.sync(outputFixturesFilePath1);
|
|
|
|
+ rimraf.sync(outputFixturesFilePath2);
|
|
|
|
+ });
|
|
|
|
+ });
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
describe('`--sourceMap` option is set', () => {
|
|
describe('`--sourceMap` option is set', () => {
|
|
const outputSourceMapPath: string = `${outputFilePath}.map`;
|
|
const outputSourceMapPath: string = `${outputFilePath}.map`;
|
|
|
|
|
|
- describe('variant #1: `--sourceMapMode` option value is `separate`', () => {
|
|
|
|
- describe('variant #1: default behaviour', () => {
|
|
|
|
|
|
+ describe('Variant #1: `--sourceMapMode` option value is `separate`', () => {
|
|
|
|
+ describe('Variant #1: default behaviour', () => {
|
|
let isFileExist: boolean,
|
|
let isFileExist: boolean,
|
|
sourceMapObject: any;
|
|
sourceMapObject: any;
|
|
|
|
|
|
@@ -370,7 +549,7 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- describe('variant #2: `sourceMapBaseUrl` option is set', () => {
|
|
|
|
|
|
+ describe('Variant #2: `sourceMapBaseUrl` option is set', () => {
|
|
let isFileExist: boolean,
|
|
let isFileExist: boolean,
|
|
sourceMapObject: any;
|
|
sourceMapObject: any;
|
|
|
|
|
|
@@ -423,7 +602,7 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- describe('variant #3: `--sourceMapFileName` option is set', () => {
|
|
|
|
|
|
+ describe('Variant #3: `--sourceMapFileName` option is set', () => {
|
|
const sourceMapFileName: string = 'test';
|
|
const sourceMapFileName: string = 'test';
|
|
const sourceMapFilePath: string = `${sourceMapFileName}.js.map`;
|
|
const sourceMapFilePath: string = `${sourceMapFileName}.js.map`;
|
|
const outputSourceMapFilePath: string = `${outputDirName}/${sourceMapFilePath}`;
|
|
const outputSourceMapFilePath: string = `${outputDirName}/${sourceMapFilePath}`;
|
|
@@ -481,7 +660,7 @@ describe('JavaScriptObfuscatorCLI', function (): void {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
- describe('variant #2: `--sourceMapMode` option is `inline`', () => {
|
|
|
|
|
|
+ describe('Variant #2: `--sourceMapMode` option is `inline`', () => {
|
|
let isFileExist: boolean;
|
|
let isFileExist: boolean;
|
|
|
|
|
|
before(() => {
|
|
before(() => {
|