ObfuscatingGuardsTransformer.spec.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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 { Nodes } from '../../../../src/node/Nodes';
  10. import { NodeUtils } from '../../../../src/node/NodeUtils';
  11. describe('ObfuscatingGuardsTransformer', () => {
  12. describe('transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node', () => {
  13. let inversifyContainerFacade: IInversifyContainerFacade,
  14. obfuscatingGuardsTransformer: INodeTransformer;
  15. before(() => {
  16. inversifyContainerFacade = new InversifyContainerFacade();
  17. inversifyContainerFacade.load('', {});
  18. obfuscatingGuardsTransformer = inversifyContainerFacade
  19. .getNamed(ServiceIdentifiers.INodeTransformer, NodeTransformer.ObfuscatingGuardsTransformer);
  20. });
  21. describe('variant #1: valid node', () => {
  22. const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo');
  23. const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
  24. let result: ESTree.Identifier;
  25. before(() => {
  26. identifier.parentNode = identifier;
  27. expectedResult.ignoredNode = false;
  28. result = <ESTree.Identifier>obfuscatingGuardsTransformer.transformNode(identifier, identifier);
  29. });
  30. it('should add `ignoredNode` property with `false` value to given node', () => {
  31. assert.deepEqual(result, expectedResult);
  32. });
  33. });
  34. describe('variant #2: invalid node', () => {
  35. const expressionStatement: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(
  36. Nodes.getIdentifierNode('foo')
  37. );
  38. const expectedResult: ESTree.ExpressionStatement = NodeUtils.clone(expressionStatement);
  39. let result: ESTree.ExpressionStatement;
  40. before(() => {
  41. expressionStatement.directive = 'use strict';
  42. expressionStatement.parentNode = expressionStatement;
  43. expressionStatement.expression.parentNode = expressionStatement;
  44. expectedResult.directive = 'use strict';
  45. expectedResult.parentNode = expectedResult;
  46. expectedResult.ignoredNode = true;
  47. result = <ESTree.ExpressionStatement>obfuscatingGuardsTransformer
  48. .transformNode(expressionStatement, expressionStatement);
  49. });
  50. it('should add `ignoredNode` property with `true` value to given node', () => {
  51. assert.deepEqual(result, expectedResult);
  52. });
  53. });
  54. });
  55. });