BooleanLiteralObfuscatingReplacer.spec.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import * as ESTree from 'estree';
  4. import { IInversifyContainerFacade } from '../../../../../../src/interfaces/container/IInversifyContainerFacade';
  5. import { IObfuscatingReplacer } from '../../../../../../src/interfaces/node-transformers/obfuscating-transformers/obfuscating-replacers/IObfuscatingReplacer';
  6. import { LiteralObfuscatingReplacer } from '../../../../../../src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer';
  7. import { ServiceIdentifiers } from '../../../../../../src/container/ServiceIdentifiers';
  8. import { InversifyContainerFacade } from '../../../../../../src/container/InversifyContainerFacade';
  9. import { NodeFactory } from '../../../../../../src/node/NodeFactory';
  10. describe('BooleanLiteralObfuscatingReplacer', () => {
  11. describe('replace', () => {
  12. let inversifyContainerFacade: IInversifyContainerFacade,
  13. obfuscatingReplacer: IObfuscatingReplacer;
  14. before(() => {
  15. inversifyContainerFacade = new InversifyContainerFacade();
  16. inversifyContainerFacade.load('', '', {});
  17. obfuscatingReplacer = inversifyContainerFacade
  18. .getNamed(ServiceIdentifiers.IObfuscatingReplacer, LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer);
  19. });
  20. describe('Variant #1: literal value type check', () => {
  21. describe('Variant #1: literal values is a `boolean` value', () => {
  22. let testFunc: () => void;
  23. before(() => {
  24. const literalNode: ESTree.Literal = NodeFactory.literalNode(true);
  25. testFunc = () => <ESTree.Identifier>obfuscatingReplacer.replace(literalNode);
  26. });
  27. it('should not throw an error if literal values is a `boolean` value', () => {
  28. assert.doesNotThrow(testFunc,);
  29. });
  30. });
  31. describe('Variant #2: literal values is not a `boolean` value', () => {
  32. const expectedError: ErrorConstructor = Error;
  33. let testFunc: () => void;
  34. before(() => {
  35. const literalNode: ESTree.Literal = NodeFactory.literalNode('foo');
  36. testFunc = () => <ESTree.Identifier>obfuscatingReplacer.replace(literalNode);
  37. });
  38. it('should throw an error if literal values is not a `boolean` value', () => {
  39. assert.throws(testFunc, expectedError);
  40. });
  41. });
  42. });
  43. });
  44. });