UNPKG

@sync-in/server

Version:

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

90 lines (89 loc) 3.6 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 _rolesdecorator = require("../decorators/roles.decorator"); const _usermodel = require("../models/user.model"); const _test = require("../utils/test"); const _rolesguard = require("./roles.guard"); describe(_rolesguard.UserRolesGuard.name, ()=>{ let reflector; let rolesGuard; let userTest; let context; beforeAll(async ()=>{ reflector = new _core.Reflector(); rolesGuard = new _rolesguard.UserRolesGuard(reflector); userTest = new _usermodel.UserModel((0, _test.generateUserTest)()); _common.Logger.overrideLogger([ 'fatal' ]); }); it('should be defined', ()=>{ expect(reflector).toBeDefined(); expect(rolesGuard).toBeDefined(); expect(userTest).toBeDefined(); }); it('should pass with a valid role', async ()=>{ userTest.role = _user.USER_ROLE.GUEST; context = (0, _tsjest.createMock)(); (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.GUEST)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBe(true); }); it('should pass with a higher user role', async ()=>{ userTest.role = _user.USER_ROLE.USER; context = (0, _tsjest.createMock)(); (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.GUEST)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBe(true); }); it('should not pass with a lower role', async ()=>{ userTest.role = _user.USER_ROLE.GUEST; context = (0, _tsjest.createMock)(); (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBeFalsy(); }); it('should not pass with an undefined user role', async ()=>{ userTest.role = undefined; context = (0, _tsjest.createMock)(); (0, _rolesdecorator.UserHaveRole)(_user.USER_ROLE.USER)(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBeFalsy(); }); it('should not pass with a missing decorator', async ()=>{ userTest.role = _user.USER_ROLE.USER; context = (0, _tsjest.createMock)(); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBeFalsy(); }); it('should pass with an empty decorator', async ()=>{ userTest.role = _user.USER_ROLE.USER; context = (0, _tsjest.createMock)(); (0, _rolesdecorator.UserHaveRole)()(context.getHandler()); context.switchToHttp().getRequest.mockReturnValue({ user: userTest }); expect(rolesGuard.canActivate(context)).toBeTruthy(); }); }); //# sourceMappingURL=roles.guard.spec.js.map