diff --git a/backend/tests/roles.test.js b/backend/tests/roles.test.js index 4dd4818..e54ea58 100644 --- a/backend/tests/roles.test.js +++ b/backend/tests/roles.test.js @@ -1,5 +1,6 @@ const request = require('supertest'); const app = require('../app'); +const { requireRole } = require('../middleware/role.middleware'); describe('Role Middleware', () => { // Mock a user with a specific role for testing @@ -12,71 +13,71 @@ describe('Role Middleware', () => { // Test that the middleware allows access to users with correct roles test('should allow access to users with correct roles', () => { - const req = { + const mockReq = { user: mockUserWithRole('admin') }; - const res = { + const mockRes = { status: jest.fn().mockReturnThis(), json: jest.fn() }; - const next = jest.fn(); + const mockNext = jest.fn(); - const middleware = require('../middleware/role.middleware'); - middleware.requireRole(['admin'])(req, res, next); + const middleware = requireRole(['admin']); + middleware(mockReq, mockRes, mockNext); - expect(next).toHaveBeenCalled(); + expect(mockNext).toHaveBeenCalled(); }); // Test that the middleware denies access to users with incorrect roles test('should deny access to users with incorrect roles', () => { - const req = { + const mockReq = { user: mockUserWithRole('user') }; - const res = { + const mockRes = { status: jest.fn().mockReturnThis(), json: jest.fn() }; - const next = jest.fn(); + const mockNext = jest.fn(); - const middleware = require('../middleware/role.middleware'); - middleware.requireRole(['admin'])(req, res, next); + const middleware = requireRole(['admin']); + middleware(mockReq, mockRes, mockNext); - expect(res.status).toHaveBeenCalledWith(403); - expect(res.json).toHaveBeenCalledWith({ error: 'Forbidden' }); + expect(mockRes.status).toHaveBeenCalledWith(403); + expect(mockRes.json).toHaveBeenCalledWith({ error: 'Forbidden' }); }); // Test that the middleware denies access to users without roles test('should deny access to users without roles', () => { - const req = { + const mockReq = { user: null }; - const res = { + const mockRes = { status: jest.fn().mockReturnThis(), json: jest.fn() }; - const next = jest.fn(); + const mockNext = jest.fn(); - const middleware = require('../middleware/role.middleware'); - middleware.requireRole(['admin'])(req, res, next); + const middleware = requireRole(['admin']); + middleware(mockReq, mockRes, mockNext); - expect(res.status).toHaveBeenCalledWith(401); - expect(res.json).toHaveBeenCalledWith({ error: 'Unauthorized' }); + expect(mockRes.status).toHaveBeenCalledWith(401); + expect(mockRes.json).toHaveBeenCalledWith({ error: 'Unauthorized' }); }); // Test that the middleware allows access to users with one of multiple required roles test('should allow access to users with one of multiple required roles', () => { - const req = { + const mockReq = { user: mockUserWithRole('moderator') }; - const res = { + const mockRes = { status: jest.fn().mockReturnThis(), json: jest.fn() }; - const next = jest.fn(); + const mockNext = jest.fn(); - const middleware = require('../middleware/role.middleware'); - middleware.requireRole(['admin', 'moderator'])(req, res, next); + const middleware = requireRole(['admin', 'moderator']); + middleware(mockReq, mockRes, mockNext); - expect(next).toHaveBeenCalled(); + expect(mockNext).toHaveBeenCalled(); }); }); \ No newline at end of file