CatchClauseObfuscator.spec.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { ICatchClauseNode } from "../../../src/interfaces/nodes/ICatchClauseNode";
  2. import { ICustomNode } from "../../../src/interfaces/ICustomNode";
  3. import { IExpressionStatementNode } from "../../../src/interfaces/nodes/IExpressionStatementNode";
  4. import { DEFAULT_PRESET } from "../../../src/preset-options/DefaultPreset";
  5. import { NodeType } from "../../../src/enums/NodeType";
  6. import { CatchClauseObfuscator } from '../../../src/node-obfuscators/CatchClauseObfuscator';
  7. import { NodeMocks } from "../../mocks/NodeMocks";
  8. import { Options } from "../../../src/Options";
  9. const assert: Chai.AssertStatic = require('chai').assert;
  10. describe('CatchClauseObfuscator', () => {
  11. describe('obfuscateNode (catchClauseNode: ICatchClauseNode): void', () => {
  12. let catchClauseObfuscator: CatchClauseObfuscator,
  13. catchClauseNode: ICatchClauseNode;
  14. beforeEach(() => {
  15. let expressionStatementNode: IExpressionStatementNode = {
  16. type: NodeType.ExpressionStatement,
  17. expression: {
  18. type: NodeType.CallExpression,
  19. callee: {
  20. type: NodeType.MemberExpression,
  21. computed: false,
  22. object: {
  23. type: NodeType.Identifier,
  24. name: 'console'
  25. },
  26. property: {
  27. type: NodeType.Identifier,
  28. name: 'log'
  29. }
  30. },
  31. arguments: [
  32. {
  33. type: NodeType.Identifier,
  34. 'name': 'err'
  35. }
  36. ]
  37. }
  38. };
  39. catchClauseObfuscator = new CatchClauseObfuscator(
  40. new Map<string, ICustomNode>(),
  41. new Options(DEFAULT_PRESET)
  42. );
  43. catchClauseNode = NodeMocks.getCatchClauseNode([
  44. expressionStatementNode
  45. ]);
  46. catchClauseObfuscator.obfuscateNode(catchClauseNode);
  47. });
  48. it('should obfuscate catch clause param name', () => {
  49. assert.match(
  50. (<any>catchClauseNode.body.body[0]).expression.arguments[0].name,
  51. /^_0x\w+$/
  52. );
  53. });
  54. it('should obfuscate catch clause param calls in catch clause node body', () => {
  55. assert.match(
  56. catchClauseNode.param.name,
  57. /^_0x\w+$/
  58. );
  59. });
  60. });
  61. });