Phase 3 Completed
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { AuthorizationService, PERMISSION_CACHE } from '../src/modules/authorization/authorization.service';
|
||||
|
||||
describe('AuthorizationService', () => {
|
||||
let service: AuthorizationService;
|
||||
const mockPrisma: any = { $queryRaw: jest.fn(), $queryRawUnsafe: jest.fn() };
|
||||
const mockCache: any = { get: jest.fn(), set: jest.fn(), invalidate: jest.fn() };
|
||||
|
||||
beforeEach(() => {
|
||||
service = new AuthorizationService(mockPrisma as any, mockCache as any);
|
||||
});
|
||||
|
||||
test('getUserPermissions uses cache when available', async () => {
|
||||
mockCache.get.mockResolvedValue(['users.read']);
|
||||
const perms = await service.getUserPermissions('uid');
|
||||
expect(perms).toEqual(['users.read']);
|
||||
expect(mockCache.get).toHaveBeenCalledWith('uid');
|
||||
});
|
||||
|
||||
test('getUserPermissions queries DB and sets cache when missing', async () => {
|
||||
mockCache.get.mockResolvedValue(null);
|
||||
mockPrisma.$queryRaw = jest.fn().mockResolvedValue([{ code: 'users.read' }]);
|
||||
const perms = await service.getUserPermissions('uid');
|
||||
expect(perms).toEqual(['users.read']);
|
||||
expect(mockCache.set).toHaveBeenCalledWith('uid', ['users.read']);
|
||||
});
|
||||
|
||||
test('hasPermission returns correct boolean', async () => {
|
||||
jest.spyOn(service, 'getUserPermissions' as any).mockResolvedValue(['users.read']);
|
||||
const ok = await service.hasPermission('uid', 'users.read');
|
||||
expect(ok).toBe(true);
|
||||
const nok = await service.hasPermission('uid', 'users.delete');
|
||||
expect(nok).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user