import { ResourcePermission, ResourcePermissionRole } from '@cloudpss/resource-types'; describe('ResourcePermission', () => { it('has should work', () => { expect(ResourcePermission.has(ResourcePermission.READ, ResourcePermission.READ)).toBe(true); expect( ResourcePermission.has(ResourcePermission.READ | ResourcePermission.WRITE, ResourcePermission.READ), ).toBe(true); expect(ResourcePermission.has(ResourcePermission.READ, ResourcePermission.WRITE)).toBe(false); }); it('add should work', () => { expect(ResourcePermission.add(ResourcePermission.READ, ResourcePermission.READ)).toBe(ResourcePermission.READ); expect(ResourcePermission.add(ResourcePermission.READ, ResourcePermission.WRITE)).toBe( ResourcePermission.READ | ResourcePermission.WRITE, ); expect( ResourcePermission.add(ResourcePermission.READ | ResourcePermission.WRITE, ResourcePermission.ADMIN), ).toBe(ResourcePermission.READ | ResourcePermission.WRITE | ResourcePermission.ADMIN); }); it('remove should work', () => { expect(ResourcePermission.remove(ResourcePermission.READ, ResourcePermission.READ)).toBe( ResourcePermission.EMPTY, ); expect( ResourcePermission.remove(ResourcePermission.READ | ResourcePermission.WRITE, ResourcePermission.READ), ).toBe(ResourcePermission.WRITE); }); it('create should work', () => { expect(ResourcePermission.create(ResourcePermission.READ)).toBe(ResourcePermission.READ); expect(ResourcePermission.create(ResourcePermission.READ, ResourcePermission.WRITE)).toBe( ResourcePermission.READ | ResourcePermission.WRITE, ); }); it('normalize should work', () => { // any implies READ_META // WRITE implies READ and WRITE_META expect(ResourcePermission.normalize(ResourcePermission.EMPTY)).toBe(ResourcePermission.EMPTY); expect(ResourcePermission.normalize(ResourcePermission.READ)).toBe( ResourcePermission.READ | ResourcePermission.READ_META, ); expect(ResourcePermission.normalize(ResourcePermission.WRITE)).toBe( ResourcePermission.READ | ResourcePermission.WRITE | ResourcePermission.WRITE_META | ResourcePermission.READ_META, ); expect(ResourcePermission.normalize(ResourcePermission.ADMIN)).toBe( ResourcePermission.ADMIN | ResourcePermission.READ_META, ); }); it('count should work', () => { expect(ResourcePermission.count(ResourcePermission.READ)).toBe(1); expect(ResourcePermission.count(ResourcePermission.READ | ResourcePermission.WRITE)).toBe(2); expect( ResourcePermission.count(ResourcePermission.READ | ResourcePermission.WRITE | ResourcePermission.ADMIN), ).toBe(3); }); it('isCommon should work', () => { expect(ResourcePermission.isCommon(ResourcePermission.READ)).toBe(true); expect(ResourcePermission.isCommon(ResourcePermission.WRITE)).toBe(true); expect(ResourcePermission.isCommon(ResourcePermission.ADMIN)).toBe(true); expect(ResourcePermission.isCommon(ResourcePermission.READ_META)).toBe(true); expect(ResourcePermission.isCommon(ResourcePermission.WRITE_META)).toBe(true); expect( ResourcePermission.isCommon( ResourcePermission.WRITE_META | ResourcePermission.READ | ResourcePermission.DELETE, ), ).toBe(true); expect(ResourcePermission.isCommon(ResourcePermission.DATASOURCE_VIEW)).toBe(false); expect( ResourcePermission.isCommon(ResourcePermission.DATASOURCE_VIEW | ResourcePermission.FUNCTION_EXECUTE), ).toBe(false); }); it('isCustom should work', () => { expect(ResourcePermission.isCustom(ResourcePermission.READ)).toBe(false); expect(ResourcePermission.isCustom(ResourcePermission.WRITE)).toBe(false); expect(ResourcePermission.isCustom(ResourcePermission.ADMIN)).toBe(false); expect(ResourcePermission.isCustom(ResourcePermission.READ_META)).toBe(false); expect(ResourcePermission.isCustom(ResourcePermission.WRITE_META)).toBe(false); expect( ResourcePermission.isCustom( ResourcePermission.WRITE_META | ResourcePermission.READ | ResourcePermission.DELETE, ), ).toBe(false); expect(ResourcePermission.isCustom(ResourcePermission.DATASOURCE_VIEW)).toBe(true); expect( ResourcePermission.isCustom(ResourcePermission.DATASOURCE_VIEW | ResourcePermission.FUNCTION_EXECUTE), ).toBe(true); }); }); describe('ResourcePermissionRole', () => { it('should include rules', () => { expect(ResourcePermissionRole).toContain('moderator'); expect(ResourcePermissionRole).toContain('member'); expect(ResourcePermissionRole).toContain('everyone'); expect(ResourcePermissionRole).toHaveLength(3); }); it('should not include `owner`', () => { expect(ResourcePermissionRole).not.toContain('owner'); }); });