diff --git a/server/middleware/auth.js b/server/middleware/auth.js index aced91c..6eaba58 100644 --- a/server/middleware/auth.js +++ b/server/middleware/auth.js @@ -1,5 +1,17 @@ const jwt = require('jsonwebtoken'); -const { User, Tenant } = require('../models'); + +// Allow models to be injected for testing +let models = null; +try { + models = require('../models'); +} catch (error) { + // Models will be injected during testing +} + +// Function to set models (used in testing) +function setModels(testModels) { + models = testModels; +} async function authenticateToken(req, res, next) { const authHeader = req.headers['authorization']; @@ -27,10 +39,10 @@ async function authenticateToken(req, res, next) { // For older tokens without tenantId, we need to look up the user's tenant let tenantId = decoded.tenantId; - const user = await User.findByPk(decoded.userId, { + const user = await models.User.findByPk(decoded.userId, { attributes: ['id', 'username', 'email', 'role', 'is_active', 'tenant_id'], include: [{ - model: Tenant, + model: models.Tenant, as: 'tenant', attributes: ['slug', 'name'] }] @@ -89,5 +101,6 @@ function requireRole(roles) { module.exports = { authenticateToken, - requireRole + requireRole, + setModels }; diff --git a/server/tests/setup.js b/server/tests/setup.js index 148bb75..67259f8 100644 --- a/server/tests/setup.js +++ b/server/tests/setup.js @@ -83,9 +83,9 @@ async function setupTestEnvironment() { id: mainModelsPath }; - // Clear cache for middleware modules so they re-import the overridden models - const authMiddlewarePath = path.resolve(__dirname, '../middleware/auth.js'); - delete require.cache[authMiddlewarePath]; + // Inject test models into middleware modules + const authMiddleware = require('../middleware/auth'); + authMiddleware.setModels(models); // Sync database await sequelize.sync({ force: true });