ObfuscatingGuardsTransformer.spec.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import * as ESTree from 'estree';
  4. import { ServiceIdentifiers } from '../../../../src/container/ServiceIdentifiers';
  5. import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade';
  6. import { IInversifyContainerFacade } from '../../../../src/interfaces/container/IInversifyContainerFacade';
  7. import { INodeTransformer } from '../../../../src/interfaces/node-transformers/INodeTransformer';
  8. import { NodeTransformer } from '../../../../src/enums/node-transformers/NodeTransformer';
  9. import { NodeFactory } from '../../../../src/node/NodeFactory';
  10. import { NodeUtils } from '../../../../src/node/NodeUtils';
  11. import { NodeMetadata } from '../../../../src/node/NodeMetadata';
  12. describe('ObfuscatingGuardsTransformer', () => {
  13. describe('transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node', () => {
  14. let inversifyContainerFacade: IInversifyContainerFacade,
  15. obfuscatingGuardsTransformer: INodeTransformer;
  16. before(() => {
  17. inversifyContainerFacade = new InversifyContainerFacade();
  18. inversifyContainerFacade.load('', {});
  19. obfuscatingGuardsTransformer = inversifyContainerFacade
  20. .getNamed(ServiceIdentifiers.INodeTransformer, NodeTransformer.ObfuscatingGuardsTransformer);
  21. });
  22. describe('Variant #1: valid node', () => {
  23. const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo');
  24. const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
  25. let result: ESTree.Identifier;
  26. before(() => {
  27. identifier.parentNode = identifier;
  28. NodeMetadata.set(expectedResult, { ignoredNode: false });
  29. result = <ESTree.Identifier>obfuscatingGuardsTransformer.transformNode(identifier, identifier);
  30. });
  31. it('should add `ignoredNode` property with `false` value to given node', () => {
  32. assert.deepEqual(result, expectedResult);
  33. });
  34. });
  35. describe('Variant #2: invalid node', () => {
  36. const expressionStatement: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(
  37. NodeFactory.identifierNode('foo')
  38. );
  39. const expectedResult: ESTree.ExpressionStatement = NodeUtils.clone(expressionStatement);
  40. let result: ESTree.ExpressionStatement;
  41. before(() => {
  42. expressionStatement.directive = 'use strict';
  43. expressionStatement.parentNode = expressionStatement;
  44. expressionStatement.expression.parentNode = expressionStatement;
  45. expectedResult.directive = 'use strict';
  46. expectedResult.parentNode = expectedResult;
  47. NodeMetadata.set(expectedResult, { ignoredNode: true });
  48. result = <ESTree.ExpressionStatement>obfuscatingGuardsTransformer
  49. .transformNode(expressionStatement, expressionStatement);
  50. });
  51. it('should add `ignoredNode` property with `true` value to given node', () => {
  52. assert.deepEqual(result, expectedResult);
  53. });
  54. });
  55. });
  56. });