UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

103 lines (102 loc) 4.21 kB
/* * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com> * This file is part of Sync-in | The open source file sync and share solution * See the LICENSE file for licensing details */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _tsjest = require("@golevelup/ts-jest"); const _common = require("@nestjs/common"); const _core = require("@nestjs/core"); const _user = require("../constants/user"); const _permissionsdecorator = require("../decorators/permissions.decorator"); const _usermodel = require("../models/user.model"); const _test = require("../utils/test"); const _permissionsguard = require("./permissions.guard"); describe(_permissionsguard.UserPermissionsGuard.name, ()=>{ let reflector; let permissionsGuard; let userTest; let context; beforeAll(async ()=>{ reflector = new _core.Reflector(); permissionsGuard = new _permissionsguard.UserPermissionsGuard(reflector); userTest = new _usermodel.UserModel((0, _test.generateUserTest)()); _common.Logger.overrideLogger([ 'fatal' ]); }); it('should be defined', ()=>{ expect(permissionsGuard).toBeDefined(); expect(userTest).toBeDefined(); }); it('should pass with a valid permission', async ()=>{ userTest.applications = [ _user.USER_PERMISSION.PERSONAL_SPACE ]; context = (0, _tsjest.createMock)(); (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.PERSONAL_SPACE)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(permissionsGuard.canActivate(context)).toBe(true); }); it('should pass if any of the permissions are granted', async ()=>{ userTest.applications = [ _user.USER_PERMISSION.PERSONAL_SPACE ]; context = (0, _tsjest.createMock)(); (0, _permissionsdecorator.UserHavePermission)([ _user.USER_PERMISSION.SPACES, _user.USER_PERMISSION.PERSONAL_SPACE ])(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(permissionsGuard.canActivate(context)).toBe(true); }); it('should not pass with a bad permission', async ()=>{ userTest.applications = []; context = (0, _tsjest.createMock)(); (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.PERSONAL_SPACE)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(()=>permissionsGuard.canActivate(context)).toThrow(_common.HttpException); }); it('should pass with no permissions but with the admin role', async ()=>{ userTest.applications = []; userTest.role = _user.USER_ROLE.ADMINISTRATOR; context = (0, _tsjest.createMock)(); (0, _permissionsdecorator.UserHavePermission)(_user.USER_PERMISSION.PERSONAL_SPACE)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(permissionsGuard.canActivate(context)).toBe(true); // reset userTest.role = _user.USER_ROLE.USER; }); it('should not pass with a missing decorator', async ()=>{ userTest.applications = [ _user.USER_PERMISSION.PERSONAL_SPACE ]; context = (0, _tsjest.createMock)(); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(permissionsGuard.canActivate(context)).toBeFalsy(); }); it('should pass with an empty decorator', async ()=>{ userTest.applications = [ _user.USER_PERMISSION.PERSONAL_SPACE ]; context = (0, _tsjest.createMock)(); (0, _permissionsdecorator.UserHavePermission)()(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(permissionsGuard.canActivate(context)).toBeTruthy(); }); }); //# sourceMappingURL=permissions.guard.spec.js.map