mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
86 lines
3.2 KiB
TypeScript
86 lines
3.2 KiB
TypeScript
import * as ESTree from 'estree';
|
|
|
|
import { ICustomNode } from '../../../src/interfaces/custom-nodes/ICustomNode';
|
|
|
|
import { DEFAULT_PRESET } from '../../../src/preset-options/DefaultPreset';
|
|
|
|
import { FunctionObfuscator } from '../../../src/node-obfuscators/FunctionObfuscator';
|
|
import { NodeMocks } from '../../mocks/NodeMocks';
|
|
import { Options } from '../../../src/options/Options';
|
|
|
|
|
|
const assert: Chai.AssertStatic = require('chai').assert;
|
|
|
|
describe('FunctionObfuscator', () => {
|
|
describe('obfuscateNode (functionNode: IFunctionNode): void', () => {
|
|
let blockStatementNode: ESTree.BlockStatement,
|
|
expressionStatementNode1: ESTree.ExpressionStatement,
|
|
expressionStatementNode2: ESTree.ExpressionStatement,
|
|
functionObfuscator: FunctionObfuscator,
|
|
functionDeclarationNode: ESTree.FunctionDeclaration,
|
|
functionName: string = 'functionDeclaration',
|
|
identifierName: string = 'identifierName',
|
|
identifierNode1: ESTree.Identifier,
|
|
identifierNode2: ESTree.Identifier,
|
|
identifierNode3: ESTree.Identifier,
|
|
paramName: string = 'param1',
|
|
programNode: ESTree.Program;
|
|
|
|
before(() => {
|
|
identifierNode1 = NodeMocks.getIdentifierNode(paramName);
|
|
identifierNode2 = NodeMocks.getIdentifierNode(paramName);
|
|
identifierNode3 = NodeMocks.getIdentifierNode(identifierName);
|
|
|
|
expressionStatementNode1 = NodeMocks.getExpressionStatementNode(
|
|
NodeMocks.getCallExpressionNode(identifierNode2)
|
|
);
|
|
|
|
expressionStatementNode2 = NodeMocks.getExpressionStatementNode(
|
|
NodeMocks.getCallExpressionNode(identifierNode3)
|
|
);
|
|
|
|
blockStatementNode = NodeMocks.getBlockStatementNode([
|
|
expressionStatementNode1
|
|
]);
|
|
|
|
functionDeclarationNode = NodeMocks.getFunctionDeclarationNode(
|
|
functionName,
|
|
blockStatementNode,
|
|
[
|
|
identifierNode1
|
|
]
|
|
);
|
|
|
|
programNode = NodeMocks.getProgramNode([
|
|
functionDeclarationNode
|
|
]);
|
|
|
|
programNode['parentNode'] = programNode;
|
|
functionDeclarationNode['parentNode'] = programNode;
|
|
blockStatementNode['parentNode'] = functionDeclarationNode;
|
|
identifierNode1['parentNode'] = functionDeclarationNode;
|
|
expressionStatementNode1['parentNode'] = blockStatementNode;
|
|
|
|
functionObfuscator = new FunctionObfuscator(
|
|
new Map<string, ICustomNode>(),
|
|
new Options(DEFAULT_PRESET)
|
|
);
|
|
|
|
functionObfuscator.obfuscateNode(functionDeclarationNode);
|
|
});
|
|
|
|
it('should obfuscate function parameter', () => {
|
|
assert.match(identifierNode1.name, /^_0x\w+$/);
|
|
});
|
|
|
|
it('should obfuscate function parameter in function body', () => {
|
|
assert.match(identifierNode2.name, /^_0x\w+$/);
|
|
assert.equal(identifierNode2.name, identifierNode1.name);
|
|
});
|
|
|
|
it('shouldn\'t obfuscate other identifiers in function body', () => {
|
|
assert.equal(identifierNode3.name, identifierName);
|
|
});
|
|
});
|
|
});
|