|
@@ -9,7 +9,7 @@ import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscatorFac
|
|
|
describe('HashbangOperatorTransformer', () => {
|
|
|
describe('Variant #1: simple', () => {
|
|
|
const regExp: RegExp = new RegExp(
|
|
|
- `#!\/usr\/bin\/env node\n` +
|
|
|
+ `^#!\/usr\/bin\/env node\n` +
|
|
|
`var foo *= *'abc';`
|
|
|
);
|
|
|
|
|
@@ -33,7 +33,7 @@ describe('HashbangOperatorTransformer', () => {
|
|
|
|
|
|
describe('Variant #2: multiple new lines', () => {
|
|
|
const regExp: RegExp = new RegExp(
|
|
|
- `#!\/usr\/bin\/env node\n\n\n\n` +
|
|
|
+ `^#!\/usr\/bin\/env node\n\n\n\n` +
|
|
|
`var foo *= *'abc';`
|
|
|
);
|
|
|
|
|
@@ -57,7 +57,7 @@ describe('HashbangOperatorTransformer', () => {
|
|
|
|
|
|
describe('Variant #3: `stringArray` option enabled', () => {
|
|
|
const regExp: RegExp = new RegExp(
|
|
|
- `#!\/usr\/bin\/env node\n` +
|
|
|
+ `^#!\/usr\/bin\/env node\n` +
|
|
|
`var _0x(\\w){4} *= *\\['abc'];`
|
|
|
);
|
|
|
|
|
@@ -80,4 +80,50 @@ describe('HashbangOperatorTransformer', () => {
|
|
|
assert.match(obfuscatedCode, regExp);
|
|
|
});
|
|
|
});
|
|
|
+
|
|
|
+ describe('Variant #4: invalid hashbang indent', () => {
|
|
|
+ const regExp: RegExp = new RegExp(
|
|
|
+ `^var foo *= *'abc';`
|
|
|
+ );
|
|
|
+
|
|
|
+ let obfuscatedCode: string;
|
|
|
+
|
|
|
+ before(() => {
|
|
|
+ const code: string = readFileAsString(__dirname + '/fixtures/hashbang-indent.js');
|
|
|
+
|
|
|
+ obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
|
|
+ code,
|
|
|
+ {
|
|
|
+ ...NO_ADDITIONAL_NODES_PRESET
|
|
|
+ }
|
|
|
+ ).getObfuscatedCode();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should remove invalid hashbang operator', () => {
|
|
|
+ assert.match(obfuscatedCode, regExp);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('Variant #5: hashbang as a string value', () => {
|
|
|
+ const regExp: RegExp = new RegExp(
|
|
|
+ `^var foo *= *'#!/usr/bin/env\\\\x20node';$`
|
|
|
+ );
|
|
|
+
|
|
|
+ let obfuscatedCode: string;
|
|
|
+
|
|
|
+ before(() => {
|
|
|
+ const code: string = readFileAsString(__dirname + '/fixtures/hashbang-as-string-value.js');
|
|
|
+
|
|
|
+ obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
|
|
+ code,
|
|
|
+ {
|
|
|
+ ...NO_ADDITIONAL_NODES_PRESET
|
|
|
+ }
|
|
|
+ ).getObfuscatedCode();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should keep hashbang operator as a string value', () => {
|
|
|
+ assert.match(obfuscatedCode, regExp);
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|