CatchClauseObfuscator.spec.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { ICatchClauseNode } from "../../src/interfaces/nodes/ICatchClauseNode";
  2. import { ICustomNode } from "../../src/interfaces/ICustomNode";
  3. import { INode } from "../../src/interfaces/nodes/INode";
  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. catchClauseObfuscator = new CatchClauseObfuscator(
  16. new Map<string, ICustomNode>(),
  17. new Options(DEFAULT_PRESET)
  18. );
  19. catchClauseNode = NodeMocks.getCatchClauseNode([
  20. <INode>{
  21. type: NodeType.ExpressionStatement,
  22. expression: {
  23. type: NodeType.CallExpression,
  24. callee: {
  25. type: NodeType.MemberExpression,
  26. computed: false,
  27. object: {
  28. type: NodeType.Identifier,
  29. name: 'console'
  30. },
  31. property: {
  32. type: NodeType.Identifier,
  33. name: 'log'
  34. }
  35. },
  36. arguments: [
  37. {
  38. type: NodeType.Identifier,
  39. 'name': 'err'
  40. }
  41. ]
  42. }
  43. }
  44. ]);
  45. catchClauseObfuscator.obfuscateNode(catchClauseNode);
  46. });
  47. it('should obfuscate catch clause param name', () => {
  48. assert.match(
  49. (<any>catchClauseNode.body.body[0]).expression.arguments[0].name,
  50. /^_0x\w+$/
  51. );
  52. });
  53. it('should obfuscate catch clause param calls in catch clause node body', () => {
  54. assert.match(
  55. catchClauseNode.param.name,
  56. /^_0x\w+$/
  57. );
  58. });
  59. });
  60. });