diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2021-02-23 12:30:17 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2021-02-23 12:30:17 +0100 |
| commit | e92be2d1736cc2b4e64965a3291325ffe8a637db (patch) | |
| tree | a154472a4a415ae562956fd435d917f8a305df13 /gui/test | |
| parent | a6213b703db127554953d4fb4bbcc58dded97861 (diff) | |
| parent | 8f2c906eff0194d2142301c9f794609f04e2dd7a (diff) | |
| download | mullvadvpn-e92be2d1736cc2b4e64965a3291325ffe8a637db.tar.xz mullvadvpn-e92be2d1736cc2b4e64965a3291325ffe8a637db.zip | |
Merge branch 'improve-logger'
Diffstat (limited to 'gui/test')
| -rw-r--r-- | gui/test/ip.spec.ts | 2 | ||||
| -rw-r--r-- | gui/test/logging.spec.ts | 53 |
2 files changed, 53 insertions, 2 deletions
diff --git a/gui/test/ip.spec.ts b/gui/test/ip.spec.ts index b430e4d2b3..3a86c5891c 100644 --- a/gui/test/ip.spec.ts +++ b/gui/test/ip.spec.ts @@ -76,7 +76,7 @@ const publicIpAddresses = [ '192.169.0.0', ]; -describe('Logging', () => { +describe('IP', () => { it('should detect that valid IPv4 addresses are valid', () => { validIpv4Addresses.forEach((ipAddress) => { const valid = ip.IPv4Address.isValid(ipAddress); 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]}', + ); + }); + }); }); |
