Add test for PermissionManager

This commit is contained in:
Yuya Ochiai
2017-10-05 00:02:54 +09:00
parent c957857a08
commit ef43ec6e3e
3 changed files with 92 additions and 2 deletions

View File

@@ -40,11 +40,17 @@ class PermissionManager {
}
isGranted(origin, permission) {
return this.permissions[origin] && this.permissions[origin][permission] === PERMISSION_GRANTED;
if (this.permissions[origin]) {
return this.permissions[origin][permission] === PERMISSION_GRANTED;
}
return false;
}
isDenied(origin, permission) {
return this.permissions[origin] && this.permissions[origin][permission] === PERMISSION_DENIED;
if (this.permissions[origin]) {
return this.permissions[origin][permission] === PERMISSION_DENIED;
}
return false;
}
}
@@ -81,8 +87,11 @@ function permissionRequestHandler(mainWindow, permissionFile) {
return;
default:
callback(false);
}
};
}
permissionRequestHandler.PermissionManager = PermissionManager;
module.exports = permissionRequestHandler;

View File

@@ -23,6 +23,7 @@ const mattermostURL = 'http://example.com/team';
module.exports = {
sourceRootDir,
configFilePath,
userDataDir,
boundsInfoPath,
mattermostURL,

View File

@@ -0,0 +1,80 @@
/* eslint-disable no-unused-expressions */
const fs = require('fs');
const path = require('path');
const env = require('../modules/environment');
const {PermissionManager} = require('../../src/main/permissionRequestHandler');
const permissionFile = path.join(env.userDataDir, 'permission.json');
describe('PermissionManager', function() {
beforeEach(function(done) {
fs.unlink(permissionFile, () => {
done();
});
});
it('should grant a permisson for an origin', function() {
const ORIGIN = 'origin';
const PERMISSION = 'permission';
const manager = new PermissionManager(permissionFile);
manager.isGranted(ORIGIN, PERMISSION).should.be.false;
manager.isDenied(ORIGIN, PERMISSION).should.be.false;
manager.grant(ORIGIN, PERMISSION);
manager.isGranted(ORIGIN, PERMISSION).should.be.true;
manager.isDenied(ORIGIN, PERMISSION).should.be.false;
manager.isGranted(ORIGIN + '_another', PERMISSION).should.be.false;
manager.isGranted(ORIGIN, PERMISSION + '_another').should.be.false;
});
it('should deny a permisson for an origin', function() {
const ORIGIN = 'origin';
const PERMISSION = 'permission';
const manager = new PermissionManager(permissionFile);
manager.isGranted(ORIGIN, PERMISSION).should.be.false;
manager.isDenied(ORIGIN, PERMISSION).should.be.false;
manager.deny(ORIGIN, PERMISSION);
manager.isGranted(ORIGIN, PERMISSION).should.be.false;
manager.isDenied(ORIGIN, PERMISSION).should.be.true;
manager.isDenied(ORIGIN + '_another', PERMISSION).should.be.false;
manager.isDenied(ORIGIN, PERMISSION + '_another').should.be.false;
});
it('should save permissons to the file', function() {
const ORIGIN = 'origin';
const PERMISSION = 'permission';
const manager = new PermissionManager(permissionFile);
manager.deny(ORIGIN, PERMISSION);
manager.grant(ORIGIN + '_another', PERMISSION + '_another');
JSON.parse(fs.readFileSync(permissionFile)).should.deep.equal({
origin: {
permission: 'denied'
},
origin_another: {
permission_another: 'granted'
}
});
});
it('should restore permissions from the file', function() {
fs.writeFileSync(permissionFile, JSON.stringify({
origin: {
permission: 'denied'
},
origin_another: {
permission_another: 'granted'
}
}));
const manager = new PermissionManager(permissionFile);
manager.isDenied('origin', 'permission').should.be.true;
manager.isGranted('origin_another', 'permission_another').should.be.true;
});
});