Logger.spec.ts 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import * as sinon from 'sinon';
  4. import chalk from 'chalk';
  5. import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade';
  6. import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers';
  7. import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade';
  8. import { ILogger } from '../../../src/interfaces/logger/ILogger';
  9. import { LoggingPrefix } from '../../../src/enums/logger/LoggingPrefix';
  10. import { Logger } from '../../../src/logger/Logger';
  11. import { LoggingMessage } from '../../../src/enums/logger/LoggingMessage';
  12. describe('Logger', () => {
  13. describe('log', () => {
  14. const loggingMessage: string = '[javascript-obfuscator] foo';
  15. const expectedConsoleLogCallResult: boolean = true;
  16. let consoleLogSpy: sinon.SinonSpy<any, void>,
  17. consoleLogCallResult: boolean,
  18. loggingMessageResult: string;
  19. before(() => {
  20. consoleLogSpy = sinon.spy(console, 'log');
  21. Logger.log(chalk.cyan, LoggingPrefix.Base, 'foo');
  22. consoleLogCallResult = consoleLogSpy.called;
  23. loggingMessageResult = consoleLogSpy.getCall(0).args[0];
  24. });
  25. it('should call `console.log`', () => {
  26. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  27. });
  28. it('should log message to the console', () => {
  29. assert.include(loggingMessageResult, loggingMessage);
  30. });
  31. after(() => {
  32. consoleLogSpy.restore();
  33. });
  34. });
  35. describe('info', () => {
  36. describe('`log` option is enabled', () => {
  37. const loggingMessage: string = '[javascript-obfuscator] Obfuscation started...';
  38. const expectedConsoleLogCallResult: boolean = true;
  39. let consoleLogSpy: sinon.SinonSpy<any, void>,
  40. consoleLogCallResult: boolean,
  41. inversifyContainerFacade: IInversifyContainerFacade,
  42. loggingMessageResult: string;
  43. before(() => {
  44. inversifyContainerFacade = new InversifyContainerFacade();
  45. inversifyContainerFacade.load('', '', {
  46. log: true
  47. });
  48. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  49. consoleLogSpy = sinon.spy(console, 'log');
  50. logger.info(LoggingMessage.ObfuscationStarted);
  51. consoleLogCallResult = consoleLogSpy.called;
  52. loggingMessageResult = consoleLogSpy.getCall(0).args[0];
  53. });
  54. it('should call `console.log`', () => {
  55. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  56. });
  57. it('should log `info` message to the console', () => {
  58. assert.include(loggingMessageResult, loggingMessage);
  59. });
  60. after(() => {
  61. consoleLogSpy.restore();
  62. inversifyContainerFacade.unload();
  63. });
  64. });
  65. describe('`log` option is disabled', () => {
  66. const expectedConsoleLogCallResult: boolean = false;
  67. let consoleLogSpy: sinon.SinonSpy<any, void>,
  68. consoleLogCallResult: boolean,
  69. inversifyContainerFacade: IInversifyContainerFacade;
  70. before(() => {
  71. inversifyContainerFacade = new InversifyContainerFacade();
  72. inversifyContainerFacade.load('', '', {
  73. log: false
  74. });
  75. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  76. consoleLogSpy = sinon.spy(console, 'log');
  77. logger.info(LoggingMessage.ObfuscationStarted);
  78. consoleLogCallResult = consoleLogSpy.called;
  79. });
  80. it('shouldn\'t call `console.log`', () => {
  81. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  82. });
  83. after(() => {
  84. consoleLogSpy.restore();
  85. inversifyContainerFacade.unload();
  86. });
  87. });
  88. });
  89. describe('success', () => {
  90. describe('`log` option is enabled', () => {
  91. const loggingMessage: string = '[javascript-obfuscator] Obfuscation started...';
  92. const expectedConsoleLogCallResult: boolean = true;
  93. let consoleLogSpy: sinon.SinonSpy<any, void>,
  94. consoleLogCallResult: boolean,
  95. inversifyContainerFacade: IInversifyContainerFacade,
  96. loggingMessageResult: string;
  97. before(() => {
  98. inversifyContainerFacade = new InversifyContainerFacade();
  99. inversifyContainerFacade.load('', '', {
  100. log: true
  101. });
  102. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  103. consoleLogSpy = sinon.spy(console, 'log');
  104. logger.success(LoggingMessage.ObfuscationStarted);
  105. consoleLogCallResult = consoleLogSpy.called;
  106. loggingMessageResult = consoleLogSpy.getCall(0).args[0];
  107. });
  108. it('should call `console.log`', () => {
  109. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  110. });
  111. it('should log `success` message to the console', () => {
  112. assert.include(loggingMessageResult, loggingMessage);
  113. });
  114. after(() => {
  115. consoleLogSpy.restore();
  116. inversifyContainerFacade.unload();
  117. });
  118. });
  119. describe('`log` option is disabled', () => {
  120. const expectedConsoleLogCallResult: boolean = false;
  121. let consoleLogSpy: sinon.SinonSpy<any, void>,
  122. consoleLogCallResult: boolean,
  123. inversifyContainerFacade: IInversifyContainerFacade;
  124. before(() => {
  125. inversifyContainerFacade = new InversifyContainerFacade();
  126. inversifyContainerFacade.load('', '', {
  127. log: false
  128. });
  129. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  130. consoleLogSpy = sinon.spy(console, 'log');
  131. logger.success(LoggingMessage.ObfuscationStarted);
  132. consoleLogCallResult = consoleLogSpy.called;
  133. });
  134. it('shouldn\'t call `console.log`', () => {
  135. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  136. });
  137. after(() => {
  138. consoleLogSpy.restore();
  139. inversifyContainerFacade.unload();
  140. });
  141. });
  142. });
  143. describe('warn', () => {
  144. describe('`log` option is enabled', () => {
  145. const loggingMessage: string = '[javascript-obfuscator] Obfuscation started...';
  146. const expectedConsoleLogCallResult: boolean = true;
  147. let consoleLogSpy: sinon.SinonSpy<any, void>,
  148. consoleLogCallResult: boolean,
  149. inversifyContainerFacade: IInversifyContainerFacade,
  150. loggingMessageResult: string;
  151. before(() => {
  152. inversifyContainerFacade = new InversifyContainerFacade();
  153. inversifyContainerFacade.load('', '', {
  154. log: true
  155. });
  156. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  157. consoleLogSpy = sinon.spy(console, 'log');
  158. logger.warn(LoggingMessage.ObfuscationStarted);
  159. consoleLogCallResult = consoleLogSpy.called;
  160. loggingMessageResult = consoleLogSpy.getCall(0).args[0];
  161. });
  162. it('should call `console.log`', () => {
  163. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  164. });
  165. it('should log `warn` message to the console', () => {
  166. assert.include(loggingMessageResult, loggingMessage);
  167. });
  168. after(() => {
  169. consoleLogSpy.restore();
  170. inversifyContainerFacade.unload();
  171. });
  172. });
  173. describe('`log` option is disabled', () => {
  174. const expectedConsoleLogCallResult: boolean = false;
  175. let consoleLogSpy: sinon.SinonSpy<any, void>,
  176. consoleLogCallResult: boolean,
  177. inversifyContainerFacade: IInversifyContainerFacade;
  178. before(() => {
  179. inversifyContainerFacade = new InversifyContainerFacade();
  180. inversifyContainerFacade.load('', '', {
  181. log: false
  182. });
  183. const logger: ILogger = inversifyContainerFacade.get<ILogger>(ServiceIdentifiers.ILogger);
  184. consoleLogSpy = sinon.spy(console, 'log');
  185. logger.warn(LoggingMessage.ObfuscationStarted);
  186. consoleLogCallResult = consoleLogSpy.called;
  187. });
  188. it('shouldn\'t call `console.log`', () => {
  189. assert.equal(consoleLogCallResult, expectedConsoleLogCallResult);
  190. });
  191. after(() => {
  192. consoleLogSpy.restore();
  193. inversifyContainerFacade.unload();
  194. });
  195. });
  196. });
  197. });