diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2021-02-19 14:40:36 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2021-02-23 11:40:00 +0100 |
| commit | 1ec22390750a1eb35e899b2853ce3aa89017306a (patch) | |
| tree | 09cda0a877ae2255972e6f9dfdecafbe9336a5e1 /gui | |
| parent | 25b290d0eb21c0f69c402a2c3184a81fbfdc9dcb (diff) | |
| download | mullvadvpn-1ec22390750a1eb35e899b2853ce3aa89017306a.tar.xz mullvadvpn-1ec22390750a1eb35e899b2853ce3aa89017306a.zip | |
Add test for the log message formatter
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/test/logging.spec.ts | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/gui/test/logging.spec.ts b/gui/test/logging.spec.ts index 22c3db02fa..7d4edf386f 100644 --- a/gui/test/logging.spec.ts +++ b/gui/test/logging.spec.ts @@ -1,8 +1,10 @@ -import { expect } from 'chai'; +import { expect, spy } from 'chai'; import fs from 'fs'; import sinon from 'sinon'; import { it, describe, before, beforeEach, after } from 'mocha'; +import { Logger } from '../src/shared/logging'; import { backupLogFile, rotateOrDeleteFile } from '../src/main/logging'; +import { LogLevel } from '../src/shared/logging-types'; const aPath = 'log-directory/a.log'; const oldAPath = 'log-directory/a.old.log'; @@ -78,4 +80,53 @@ describe('Logging', () => { expect(fs.accessSync.bind(null, bPath)).to.throw(); expect(fs.accessSync.bind(null, oldBPath)).to.throw(); }); + + it('should only log for the correct log level', () => { + const logger = new Logger(); + + const errorSpy = spy(); + const warningSpy = spy(); + const infoSpy = spy(); + const verboseSpy = spy(); + const debugSpy = spy(); + + logger.addOutput({ level: LogLevel.error, write: errorSpy }); + logger.addOutput({ level: LogLevel.warning, write: warningSpy }); + logger.addOutput({ level: LogLevel.info, write: infoSpy }); + logger.addOutput({ level: LogLevel.verbose, write: verboseSpy }); + logger.addOutput({ level: LogLevel.debug, write: debugSpy }); + + logger.error(); + logger.warn(); + logger.info(); + logger.verbose(); + logger.debug(); + + expect(errorSpy).to.have.been.called.exactly(1); + expect(warningSpy).to.have.been.called.exactly(2); + expect(infoSpy).to.have.been.called.exactly(3); + expect(verboseSpy).to.have.been.called.exactly(4); + expect(debugSpy).to.have.been.called.exactly(5); + }); + + it('should format JavaScript types correctly', async () => { + const logger = new Logger(); + + const promise = new Promise((resolve, _reject) => { + logger.addOutput({ + level: LogLevel.info, + write: (_, message) => resolve(message.replace(/^.*\[info\] /, '')), + }); + }); + + logger.info('zero', 'one two', 3, [4, 5, 'six', { seven: 'eight' }], { + nine: 10, + eleven: [true], + }); + await expect(promise).to.eventually.be.fulfilled.then((result) => { + expect(result).to.equal( + 'zero one two 3 [4,5,"six",{"seven":"eight"}] {"nine":10,"eleven":[true]}', + ); + }); + }); }); |
