Vulcan/tests/jasmine/server/integration/packages/telescope-lib/permissionsSpec.js
Sacha Greif 50fc3eb11a Merge branch 'namespace' of https://github.com/TelescopeJS/Telescope into namespace
# Conflicts:
#	lib/users.js
#	packages/telescope-base/lib/base.js
#	packages/telescope-base/package.js
#	packages/telescope-lib
2015-04-20 13:57:37 +09:00

62 lines
2.3 KiB
JavaScript

'use strict';
Jasmine.onTest(function () {
describe('test permissions', function () {
var testCanViewMeta = function (testFunc, requireViewInviteEnabled, mockValue, expected) {
Settings.remove({});
Settings.insert({'requireViewInvite': requireViewInviteEnabled});
var canView = testFunc(mockValue);
expect(canView).toEqual(expected);
};
describe('test Users.can.view()', function () {
var testCanView = function (requireViewInviteEnabled, mockUser, expected) {
testCanViewMeta(Users.can.view, requireViewInviteEnabled, mockUser, expected);
};
it('should return true when requireViewInvite setting is false', function () {
testCanView(false, {}, true);
});
it('should return false when requireViewInvite setting is true and user is null', function () {
testCanView(true, null, false);
});
it('should return false when requireViewInvite setting is true and user is neither admin nor invited', function () {
testCanView(true, {}, false);
});
it('should return true when requireViewInvite setting is true and user is admin', function () {
testCanView(true, {isAdmin: true}, true);
});
it('should return true when requireViewInvite setting is true and user is invited', function () {
testCanView(true, {isInvited: true}, true);
});
});
describe('test Users.can.viewById()', function () {
var testCanViewById = function (requireViewInviteEnabled, mockUserId, expected) {
testCanViewMeta(Users.can.viewById, requireViewInviteEnabled, mockUserId, expected);
};
it('should return true when requireViewInvite setting is false', function () {
testCanViewById(false, 1, true);
});
it('should return false when requireViewInvite setting is true and userId is null', function () {
testCanViewById(true, null, false);
});
it('should return true when requireViewInvite setting is true and user can view', function () {
var canViewSpy = spyOn(can, 'view').and.returnValue(true);
var userId = 5;
testCanViewById(true, userId, true);
expect(canViewSpy.calls.count()).toEqual(1);
expect(canViewSpy).toHaveBeenCalledWith(Meteor.users.findOne(userId));
});
});
});
});