diff --git a/apps/public-api/src/__tests__/mail.controller.test.js b/apps/public-api/src/__tests__/mail.controller.test.js index a1297982b..9626c3994 100644 --- a/apps/public-api/src/__tests__/mail.controller.test.js +++ b/apps/public-api/src/__tests__/mail.controller.test.js @@ -186,9 +186,8 @@ describe('mail.controller', () => { attemptsMade: 3 }; - if (failedHandler) { - await failedHandler(mockJob, new Error("Terminal failure")); - } + expect(failedHandler).toBeDefined(); + await failedHandler(mockJob, new Error("Terminal failure")); expect(mockRedis.eval).toHaveBeenCalledWith( expect.any(String), 1, 'project:mail:count:proj_1:2026-05' @@ -222,9 +221,8 @@ describe('mail.controller', () => { attemptsMade: 1 // Not terminal yet }; - if (failedHandler) { - await failedHandler(mockJob, new Error("Temporary failure")); - } + expect(failedHandler).toBeDefined(); + await failedHandler(mockJob, new Error("Temporary failure")); expect(mockRedis.eval).not.toHaveBeenCalled(); }); diff --git a/packages/common/src/queues/publicEmailQueue.js b/packages/common/src/queues/publicEmailQueue.js index c028eedf7..da0e58b57 100644 --- a/packages/common/src/queues/publicEmailQueue.js +++ b/packages/common/src/queues/publicEmailQueue.js @@ -18,9 +18,7 @@ const initPublicEmailWorker = () => { // Initialize Worker with Rate Limiting (10 per second to respect Resend limits) worker = new Worker('public-email-queue', async (job) => { const { projectId, payload, usingByok, consumedQuotaKey } = job.data; - - try { - + let clientKey = process.env.RESEND_API_KEY_2 || process.env.RESEND_API_KEY; let fromAddress = process.env.EMAIL_FROM || "urBackend "; @@ -31,8 +29,8 @@ const initPublicEmailWorker = () => { const decrypted = decrypt(project.resendApiKey); if (typeof decrypted === 'string' && decrypted.trim().length > 0) { clientKey = decrypted.trim(); - fromAddress = project.resendFromEmail && project.resendFromEmail.trim() - ? project.resendFromEmail.trim() + fromAddress = project.resendFromEmail && project.resendFromEmail.trim() + ? project.resendFromEmail.trim() : "onboarding@resend.dev"; } } @@ -65,18 +63,15 @@ const initPublicEmailWorker = () => { const maskedTo = toList.map(redact).join(', '); console.log(`[Queue] Processing public email to: ${maskedTo}`); - + const { data, error } = await resend.emails.send(finalPayload); - + if (error) { console.error(`[Queue] Failed to send public email to ${maskedTo}:`, error); throw new Error(error.message || "Failed to send email"); } - + return { data }; - } catch (err) { - throw err; - } }, { connection, limiter: { @@ -94,8 +89,7 @@ const initPublicEmailWorker = () => { if (job && job.data && job.data.consumedQuotaKey) { const maxAttempts = job.opts?.attempts || 1; if (job.attemptsMade >= maxAttempts) { - const luaScript = DECR_IF_EXISTS_SCRIPT; - await connection.eval(luaScript, 1, job.data.consumedQuotaKey).catch(() => {}); + await connection.eval(DECR_IF_EXISTS_SCRIPT, 1, job.data.consumedQuotaKey).catch(() => {}); } } });