summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2021-02-19 14:40:36 +0100
committerOskar Nyberg <oskar@mullvad.net>2021-02-23 11:40:00 +0100
commit1ec22390750a1eb35e899b2853ce3aa89017306a (patch)
tree09cda0a877ae2255972e6f9dfdecafbe9336a5e1 /gui
parent25b290d0eb21c0f69c402a2c3184a81fbfdc9dcb (diff)
downloadmullvadvpn-1ec22390750a1eb35e899b2853ce3aa89017306a.tar.xz
mullvadvpn-1ec22390750a1eb35e899b2853ce3aa89017306a.zip
Add test for the log message formatter
Diffstat (limited to 'gui')
-rw-r--r--gui/test/logging.spec.ts53
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]}',
+ );
+ });
+ });
});