/************************************************************************ * This file is part of EspoCRM. * * EspoCRM - Open Source CRM application. * Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko * Website: http://www.espocrm.com * * EspoCRM is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * EspoCRM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with EspoCRM. If not, see http://www.gnu.org/licenses/. ************************************************************************/ var Espo = Espo || {}; describe("Acl", function () { var acl; beforeEach(function () { acl = new Espo.Acl(); acl.user = { isAdmin: function () { return false; } }; }); it("should check an access properly", function () { acl.set({ table: { Lead: { read: 'team', edit: 'own', delete: 'no', }, Contact: { read: true, edit: false, delete: false, }, Opportunity: false, Meeting: true } }); expect(acl.check('Lead', 'read')).toBe(true); expect(acl.check('Lead', 'read', false, false)).toBe(true); expect(acl.check('Lead', 'read', false, true)).toBe(true); expect(acl.check('Lead', 'read', true)).toBe(true); expect(acl.check('Lead', 'edit')).toBe(true); expect(acl.check('Lead', 'edit', false, true)).toBe(false); expect(acl.check('Lead', 'edit', true, false)).toBe(true); expect(acl.check('Lead', 'delete')).toBe(true); expect(acl.check('Contact', 'read')).toBe(true); expect(acl.check('Contact', 'edit')).toBe(false); expect(acl.check('Lead', 'convert')).toBe(true); expect(acl.check('Account', 'edit')).toBe(true); expect(acl.check('Opportunity', 'edit')).toBe(false); expect(acl.check('Meeting', 'edit')).toBe(true); }); });