Added tests for ConditionalCommentObfuscatingGuard

This commit is contained in:
sanex3339
2017-09-11 00:37:54 +03:00
parent 19111abe0e
commit 162ad0e9a6
8 changed files with 125 additions and 19 deletions
+5 -5
View File
@@ -32,7 +32,7 @@
"mkdirp": "0.5.1",
"opencollective": "1.0.3",
"reflect-metadata": "0.1.10",
"source-map-support": "0.4.17",
"source-map-support": "0.4.18",
"string-template": "1.0.0",
"tslib": "1.7.1"
},
@@ -47,11 +47,11 @@
"@types/estree": "0.0.37",
"@types/md5": "2.1.32",
"@types/mkdirp": "0.5.1",
"@types/mocha": "2.2.42",
"@types/node": "8.0.26",
"@types/mocha": "2.2.43",
"@types/node": "8.0.28",
"@types/sinon": "2.3.3",
"@types/string-template": "1.0.2",
"@types/webpack-env": "1.13.0",
"@types/webpack-env": "1.13.1",
"awesome-typescript-loader": "3.2.3",
"babel-cli": "6.26.0",
"babel-loader": "7.1.2",
@@ -60,7 +60,7 @@
"chai": "4.1.2",
"coveralls": "2.13.1",
"istanbul": "1.1.0-alpha.1",
"mocha": "3.5.0",
"mocha": "3.5.1",
"pre-commit": "1.2.2",
"sinon": "3.2.1",
"ts-node": "3.3.0",
@@ -0,0 +1,77 @@
import { assert } from 'chai';
import { IObfuscationResult } from '../../../../../../src/interfaces/IObfuscationResult';
import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade';
import { NO_CUSTOM_NODES_PRESET } from '../../../../../../src/options/presets/NoCustomNodes';
import { readFileAsString } from '../../../../../helpers/readFileAsString';
describe('ConditionalCommentObfuscatingGuard', () => {
describe('check (node: ESTree.Node): boolean', () => {
describe('variant #1: `disable` conditional comment', () => {
const obfuscatedVariableDeclarationRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x1;/;
const ignoredVariableDeclarationRegExp: RegExp = /var *bar *= *2;/;
const consoleLogRegExp: RegExp = /console.log\(_0x([a-f0-9]){4,6}\);/;
let obfuscatedCode: string;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/simple.js');
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
code,
{
...NO_CUSTOM_NODES_PRESET
}
);
obfuscatedCode = obfuscationResult.getObfuscatedCode();
});
it('match #1: should obfuscate variable declaration before `disable` conditional comment', () => {
assert.match(obfuscatedCode, obfuscatedVariableDeclarationRegExp);
});
it('match #2: should ignore variable declaration after `disable` conditional comment', () => {
assert.match(obfuscatedCode, ignoredVariableDeclarationRegExp);
});
it('match #3: should obfuscate variable name in `console.log`', () => {
assert.match(obfuscatedCode, consoleLogRegExp);
});
});
describe('variant #2: `disable` and `enable` conditional comment', () => {
const obfuscatedVariableDeclaration1RegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x1;/;
const obfuscatedVariableDeclaration2RegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x3;/;
const ignoredVariableDeclarationRegExp: RegExp = /var *bar *= *2;/;
let obfuscatedCode: string;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/disable-and-enable-comments.js');
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
code,
{
...NO_CUSTOM_NODES_PRESET
}
);
obfuscatedCode = obfuscationResult.getObfuscatedCode();
});
it('match #1: should obfuscate variable declaration before `disable` conditional comment', () => {
assert.match(obfuscatedCode, obfuscatedVariableDeclaration1RegExp);
});
it('match #2: should ignore variable declaration after `disable` conditional comment', () => {
assert.match(obfuscatedCode, ignoredVariableDeclarationRegExp);
});
it('match #3: should obfuscate variable declaration after `enable` conditional comment', () => {
assert.match(obfuscatedCode, obfuscatedVariableDeclaration2RegExp);
});
});
});
});
@@ -0,0 +1,9 @@
(function () {
var foo = 1;
// javascript-obfuscator:disable
var bar = 2;
// javascript-obfuscator:enable
var baz = 3;
})();
@@ -0,0 +1,8 @@
(function () {
var foo = 1;
// javascript-obfuscator:disable
var bar = 2;
console.log(foo);
})();
+2 -1
View File
@@ -58,7 +58,8 @@ import './functional-tests/node-transformers/obfuscating-transformers/labeled-st
import './functional-tests/node-transformers/obfuscating-transformers/literal-transformer/LiteralTransformer.spec';
import './functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/ObjectExpressionTransformer.spec';
import './functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec';
import './functional-tests/node-transformers/parentizing-transformers/obfuscating-guards/black-list-node-guard/BlackListObfuscatingGuard.spec';
import './functional-tests/node-transformers/parentizing-transformers/obfuscating-guards/black-list-obfuscating-guard/BlackListObfuscatingGuard.spec';
import './functional-tests/node-transformers/parentizing-transformers/obfuscating-guards/conditional-comment-obfuscating-guard/ConditionalCommentObfuscatingGuard.spec';
import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec';
import './functional-tests/templates/custom-nodes/string-array-nodes/StringArrayCallsWrapperNodeTemplate.spec';
+24 -13
View File
@@ -52,17 +52,17 @@
dependencies:
"@types/node" "*"
"@types/mocha@2.2.42":
version "2.2.42"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.42.tgz#ab769f51d37646b6fe8d4a086a98c285b1fab3f5"
"@types/mocha@2.2.43":
version "2.2.43"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.43.tgz#03c54589c43ad048cbcbfd63999b55d0424eec27"
"@types/node@*":
version "8.0.25"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.25.tgz#66ecaf4df93f5281b48427ee96fbcdfc4f0cdce1"
"@types/node@8.0.26":
version "8.0.26"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.26.tgz#4d58be925306fd22b1141085535a0268b8beb189"
"@types/node@8.0.28":
version "8.0.28"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.28.tgz#86206716f8d9251cf41692e384264cbd7058ad60"
"@types/sinon@2.3.3":
version "2.3.3"
@@ -72,9 +72,9 @@
version "1.0.2"
resolved "https://registry.yarnpkg.com/@types/string-template/-/string-template-1.0.2.tgz#363b273c9b456705e3111e3571e9248f6474eba4"
"@types/webpack-env@1.13.0":
version "1.13.0"
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.0.tgz#3044381647e11ee973c5af2e925323930f691d80"
"@types/webpack-env@1.13.1":
version "1.13.1"
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.1.tgz#b45c222e24301bd006e3edfc762cc6b51bda236a"
abbrev@1, abbrev@1.0.x:
version "1.0.9"
@@ -1934,6 +1934,10 @@ hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
he@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
hmac-drbg@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -2674,9 +2678,9 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0:
dependencies:
minimist "0.0.8"
mocha@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.0.tgz#1328567d2717f997030f8006234bce9b8cd72465"
mocha@3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.1.tgz#9b6d13ac1ccf957edd16f2e439055734b1b60391"
dependencies:
browser-stdout "1.3.0"
commander "2.9.0"
@@ -2685,6 +2689,7 @@ mocha@3.5.0:
escape-string-regexp "1.0.5"
glob "7.1.1"
growl "1.9.2"
he "1.1.1"
json3 "3.3.2"
lodash.create "3.1.1"
mkdirp "0.5.1"
@@ -3520,7 +3525,13 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
source-map-support@0.4.17, source-map-support@^0.4.0, source-map-support@^0.4.15:
source-map-support@0.4.18:
version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
dependencies:
source-map "^0.5.6"
source-map-support@^0.4.0, source-map-support@^0.4.15:
version "0.4.17"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.17.tgz#6f2150553e6375375d0ccb3180502b78c18ba430"
dependencies: