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 { 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', () => {
  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.directiveNode(
  37. NodeFactory.literalNode('use strict'),
  38. 'use strict'
  39. );
  40. const expectedResult: ESTree.ExpressionStatement = NodeUtils.clone(expressionStatement);
  41. let result: ESTree.ExpressionStatement;
  42. before(() => {
  43. expressionStatement.parentNode = expressionStatement;
  44. expressionStatement.expression.parentNode = expressionStatement;
  45. expectedResult.parentNode = expectedResult;
  46. NodeMetadata.set(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. });