瀏覽代碼

Added more tests that are covering `forceTransformStrings` option priorities

sanex 4 年之前
父節點
當前提交
9e2ca383a5

文件差異過大導致無法顯示
+ 0 - 0
dist/index.browser.js


文件差異過大導致無法顯示
+ 0 - 0
dist/index.cli.js


文件差異過大導致無法顯示
+ 0 - 0
dist/index.js


+ 1 - 1
src/enums/node/ObfuscatingGuardResult.ts

@@ -1,5 +1,5 @@
 export enum ObfuscatingGuardResult {
     ForceTransform = 'ForceTransform',
     Ignore = 'Ignore',
-    Obfuscate = 'Obfuscate'
+    Transform = 'Transform'
 }

+ 1 - 1
src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts

@@ -37,6 +37,6 @@ export class BlackListObfuscatingGuard implements IObfuscatingGuard {
             }
         }
 
-        return ObfuscatingGuardResult.Obfuscate;
+        return ObfuscatingGuardResult.Transform;
     }
 }

+ 1 - 1
src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts

@@ -48,7 +48,7 @@ export class ConditionalCommentObfuscatingGuard implements IObfuscatingGuard {
         }
 
         return this.obfuscationAllowed
-            ? ObfuscatingGuardResult.Obfuscate
+            ? ObfuscatingGuardResult.Transform
             : ObfuscatingGuardResult.Ignore;
     }
 

+ 2 - 2
src/node-transformers/preparing-transformers/obfuscating-guards/ForceTransformStringObfuscatingGuard.ts

@@ -38,11 +38,11 @@ export class ForceTransformStringObfuscatingGuard implements IObfuscatingGuard {
             && typeof node.value === 'string'
         ) {
             return !this.isForceTransformString(node.value)
-                ? ObfuscatingGuardResult.Obfuscate
+                ? ObfuscatingGuardResult.Transform
                 : ObfuscatingGuardResult.ForceTransform;
         }
 
-        return ObfuscatingGuardResult.Obfuscate;
+        return ObfuscatingGuardResult.Transform;
     }
 
     /**

+ 2 - 2
src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts

@@ -38,11 +38,11 @@ export class ReservedStringObfuscatingGuard implements IObfuscatingGuard {
             && typeof node.value === 'string'
         ) {
             return !this.isReservedString(node.value)
-                ? ObfuscatingGuardResult.Obfuscate
+                ? ObfuscatingGuardResult.Transform
                 : ObfuscatingGuardResult.Ignore;
         }
 
-        return ObfuscatingGuardResult.Obfuscate;
+        return ObfuscatingGuardResult.Transform;
     }
 
     /**

+ 68 - 0
test/functional-tests/node-transformers/string-array-transformers/string-array-transformer/StringArrayTransformer.spec.ts

@@ -717,6 +717,74 @@ describe('StringArrayTransformer', function () {
                 });
             });
         });
+
+        describe('Variant #4: Priority over `reservedStrings` option', () => {
+            describe('Variant #1: base case', () => {
+                const stringLiteralRegExp1: RegExp = /const foo *= *'foo';/;
+                const stringLiteralRegExp2: RegExp = /const bar *= *_0x([a-f0-9]){4}\('0x0'\);/;
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/force-transform-strings-option.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            forceTransformStrings: ['bar'],
+                            reservedStrings: ['foo', 'bar'],
+                            stringArray: true,
+                            stringArrayThreshold: 1
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('match #1: should not transform string', () => {
+                    assert.match(obfuscatedCode, stringLiteralRegExp1);
+                });
+
+                it('match #2: should transform string', () => {
+                    assert.match(obfuscatedCode, stringLiteralRegExp2);
+                });
+            });
+        });
+
+        describe('Variant #5: Priority on conditional comments', () => {
+            describe('Variant #1: base case', () => {
+                const stringLiteralRegExp1: RegExp = /const foo *= *'foo';/;
+                const stringLiteralRegExp2: RegExp = /const bar *= *'bar';/;
+                const stringLiteralRegExp3: RegExp = /const baz *= *_0x([a-f0-9]){4}\('0x0'\);/;
+
+                let obfuscatedCode: string;
+
+                before(() => {
+                    const code: string = readFileAsString(__dirname + '/fixtures/force-transform-strings-option-conditional-comments.js');
+
+                    obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                        code,
+                        {
+                            ...NO_ADDITIONAL_NODES_PRESET,
+                            forceTransformStrings: ['bar'],
+                            stringArray: true,
+                            stringArrayThreshold: 1
+                        }
+                    ).getObfuscatedCode();
+                });
+
+                it('match #1: should not transform string', () => {
+                    assert.match(obfuscatedCode, stringLiteralRegExp1);
+                });
+
+                it('match #2: should not transform string', () => {
+                    assert.match(obfuscatedCode, stringLiteralRegExp2);
+                });
+
+                it('match #3: should transform string', () => {
+                    assert.match(obfuscatedCode, stringLiteralRegExp3);
+                });
+            });
+        });
     });
 
     describe('Variant #14: object expression key literal', () => {

+ 5 - 0
test/functional-tests/node-transformers/string-array-transformers/string-array-transformer/fixtures/force-transform-strings-option-conditional-comments.js

@@ -0,0 +1,5 @@
+// javascript-obfuscator:disable
+const foo = 'foo';
+const bar = 'bar';
+// javascript-obfuscator:enable
+const baz = 'baz';

部分文件因文件數量過多而無法顯示