@sync-in/server
Version:
The secure, open-source platform for file storage, sharing, collaboration, and sync
90 lines (89 loc) • 3.6 kB
JavaScript
/*
* 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