JavaScriptObfuscatorCLI.spec.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import * as fs from 'fs';
  2. import * as mkdirp from 'mkdirp';
  3. import { JavaScriptObfuscator } from "../src/JavaScriptObfuscator";
  4. const assert: Chai.AssertStatic = require('chai').assert;
  5. describe('JavaScriptObfuscatorCLI', () => {
  6. let fixturesDirName: string = 'test/fixtures',
  7. fixtureFileName: string = 'sample.js',
  8. fixtureFilePath: string = `${fixturesDirName}/${fixtureFileName}`,
  9. outputDirName: string = 'test/tmp',
  10. outputFileName: string = 'sample-obfuscated.js',
  11. outputFilePath: string = `${outputDirName}/${outputFileName}`;
  12. describe('run (): void', () => {
  13. before(() => {
  14. mkdirp.sync(outputDirName);
  15. });
  16. describe('--output option is set', () => {
  17. it('should creates file with obfuscated JS code in --output directory', () => {
  18. JavaScriptObfuscator.runCLI([
  19. 'node',
  20. 'javascript-obfuscator',
  21. fixtureFilePath,
  22. '--output',
  23. outputFilePath,
  24. '--compact',
  25. 'true',
  26. '--selfDefending',
  27. '0'
  28. ]);
  29. assert.equal(fs.existsSync(outputFilePath), true);
  30. });
  31. afterEach(() => {
  32. fs.unlinkSync(outputFilePath);
  33. });
  34. });
  35. describe('—output option is not set', () => {
  36. it(`should creates file called \`${outputFileName}\` with obfuscated JS code in \`${fixturesDirName}\` directory`, () => {
  37. let outputFixturesFilePath: string = `${fixturesDirName}/${outputFileName}`;
  38. JavaScriptObfuscator.runCLI([
  39. 'node',
  40. 'javascript-obfuscator',
  41. fixtureFilePath
  42. ]);
  43. assert.equal(fs.existsSync(outputFixturesFilePath), true);
  44. fs.unlinkSync(outputFixturesFilePath);
  45. });
  46. it(`should throw an error if input path is not a valid file path`, () => {
  47. assert.throws(() => JavaScriptObfuscator.runCLI([
  48. 'node',
  49. 'javascript-obfuscator',
  50. 'wrong/file/path'
  51. ]), ReferenceError);
  52. });
  53. it(`should throw an error if input file extension is not a .js extension`, () => {
  54. let outputWrongExtensionFileName: string = 'sample-obfuscated.ts',
  55. outputWrongExtensionFilePath: string = `${outputDirName}/${outputWrongExtensionFileName}`;
  56. fs.writeFileSync(outputWrongExtensionFilePath, 'data');
  57. assert.throws(() => JavaScriptObfuscator.runCLI([
  58. 'node',
  59. 'javascript-obfuscator',
  60. outputWrongExtensionFilePath
  61. ]), ReferenceError);
  62. fs.unlinkSync(outputWrongExtensionFilePath);
  63. });
  64. });
  65. after(() => {
  66. fs.rmdirSync(outputDirName);
  67. });
  68. });
  69. });