From f84116e681ed1ed703a735d65b5e93d26fba3aad Mon Sep 17 00:00:00 2001 From: Nandu Krishna Date: Sat, 28 Feb 2026 16:57:05 +0530 Subject: [PATCH 1/2] fix: remove raw error responses --- server/controllers/aws.controller.js | 3 ++- server/controllers/user.controller/apiKey.ts | 10 ++++------ server/controllers/user.controller/authManagement.ts | 3 ++- server/controllers/user.controller/helpers.ts | 3 ++- server/controllers/user.controller/signup.ts | 7 ++++--- server/controllers/user.controller/userPreferences.ts | 6 ++++-- server/server.js | 3 ++- 7 files changed, 20 insertions(+), 15 deletions(-) diff --git a/server/controllers/aws.controller.js b/server/controllers/aws.controller.js index f321c40ffa..41bc627a51 100644 --- a/server/controllers/aws.controller.js +++ b/server/controllers/aws.controller.js @@ -149,7 +149,8 @@ export async function copyObjectInS3RequestHandler(req, res) { const newUrl = await copyObjectInS3(url, req.user.id); res.json({ url: newUrl }); } catch (error) { - res.status(500).json({ error: error.message }); + console.error('Error copying object in S3:', error.message); + res.status(500).json({ error: 'Internal server error' }); } } diff --git a/server/controllers/user.controller/apiKey.ts b/server/controllers/user.controller/apiKey.ts index 5a8cc613f0..db77e57422 100644 --- a/server/controllers/user.controller/apiKey.ts +++ b/server/controllers/user.controller/apiKey.ts @@ -77,10 +77,9 @@ export const createApiKey: RequestHandler< res.json({ apiKeys }); } catch (err) { if (err instanceof Error) { - res.status(500).json({ error: err.message }); - } else { - res.status(500).json({ error: 'Internal server error' }); + console.error('Could not create API key:', err.message); } + res.status(500).json({ error: 'Internal server error' }); } }; @@ -122,9 +121,8 @@ export const removeApiKey: RequestHandler< res.status(200).json({ apiKeys: user.apiKeys }); } catch (err: unknown) { if (err instanceof Error) { - res.status(500).json({ error: err.message }); - } else { - res.status(500).json({ error: 'Internal server error' }); + console.error('Could not remove API key:', err.message); } + res.status(500).json({ error: 'Internal server error' }); } }; diff --git a/server/controllers/user.controller/authManagement.ts b/server/controllers/user.controller/authManagement.ts index 19f3cf870c..e6491569aa 100644 --- a/server/controllers/user.controller/authManagement.ts +++ b/server/controllers/user.controller/authManagement.ts @@ -201,7 +201,8 @@ export const updateSettings: RequestHandler< await saveUser(res, user); } } catch (err) { - res.status(500).json({ error: err }); + console.error('Could not save settings:', err); + res.status(500).json({ error: 'Internal server error' }); } }; diff --git a/server/controllers/user.controller/helpers.ts b/server/controllers/user.controller/helpers.ts index 7d05826fb1..09363c5cce 100644 --- a/server/controllers/user.controller/helpers.ts +++ b/server/controllers/user.controller/helpers.ts @@ -67,7 +67,8 @@ export async function saveUser(res: Response, user: UserDocument) { await user.save(); res.json(userResponse(user)); } catch (error) { - res.status(500).json({ error }); + console.error('Could not save user:', error); + res.status(500).json({ error: 'Internal server error' }); } } diff --git a/server/controllers/user.controller/signup.ts b/server/controllers/user.controller/signup.ts index 4aabd9df0e..243d348852 100644 --- a/server/controllers/user.controller/signup.ts +++ b/server/controllers/user.controller/signup.ts @@ -75,8 +75,8 @@ export const createUser: RequestHandler< } }); } catch (err) { - console.error(err); - res.status(500).json({ error: err }); + console.error('Could not create user:', err); + res.status(500).json({ error: 'Internal server error' }); } }; @@ -158,7 +158,8 @@ export const emailVerificationInitiate: RequestHandler< res.json(userResponse(req.user!)); } catch (err) { - res.status(500).json({ error: err }); + console.error('Could not initiate email verification:', err); + res.status(500).json({ error: 'Internal server error' }); } }; diff --git a/server/controllers/user.controller/userPreferences.ts b/server/controllers/user.controller/userPreferences.ts index 259a140839..d8f9b33641 100644 --- a/server/controllers/user.controller/userPreferences.ts +++ b/server/controllers/user.controller/userPreferences.ts @@ -33,7 +33,8 @@ export const updatePreferences: RequestHandler< await user.save(); res.json(user.preferences); } catch (err) { - res.status(500).json({ error: err }); + console.error('Could not save preferences:', err); + res.status(500).json({ error: 'Internal server error' }); } }; @@ -61,6 +62,7 @@ export const updateCookieConsent: RequestHandler< user.cookieConsent = cookieConsent; await saveUser(res, user); } catch (err) { - res.status(500).json({ error: err }); + console.error('Could not save cookie consent:', err); + res.status(500).json({ error: 'Internal server error' }); } }; diff --git a/server/server.js b/server/server.js index 7e2f362f1a..755022c2fd 100644 --- a/server/server.js +++ b/server/server.js @@ -168,7 +168,8 @@ app.get('/', (req, res) => { // Handle API errors app.use('/api', (error, req, res, next) => { if (error && error.code && !res.headersSent) { - res.status(error.code).json({ error: error.message }); + console.error('API error:', error.message); + res.status(error.code).json({ error: 'Internal server error' }); return; } From 870221858369aae7eb1cf52292b53d8b30199888 Mon Sep 17 00:00:00 2001 From: Nandu Krishna Date: Sat, 28 Feb 2026 17:48:47 +0530 Subject: [PATCH 2/2] fix: change test for 500 error responses --- .../__tests__/authManagement/updateSettings.test.ts | 6 ++++-- .../user.controller/__tests__/helpers.test.ts | 2 +- .../__tests__/userPreferences.test.ts | 12 ++++++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts b/server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts index faf6a89297..53aeab366d 100644 --- a/server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts +++ b/server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts @@ -523,7 +523,7 @@ describe('user.controller > auth management > updateSettings (email, username, p describe('and when there is any other error', () => { beforeEach(async () => { - User.findById = jest.fn().mockRejectedValue('db error'); + User.findById = jest.fn().mockRejectedValue('Internal server error'); requestBody = minimumValidRequest; request.setBody(requestBody); await updateSettings( @@ -534,7 +534,9 @@ describe('user.controller > auth management > updateSettings (email, username, p }); it('returns a 500 error', () => { expect(response.status).toHaveBeenCalledWith(500); - expect(response.json).toHaveBeenCalledWith({ error: 'db error' }); + expect(response.json).toHaveBeenCalledWith({ + error: 'Internal server error' + }); }); }); }); diff --git a/server/controllers/user.controller/__tests__/helpers.test.ts b/server/controllers/user.controller/__tests__/helpers.test.ts index b04bb2548a..af70cffe73 100644 --- a/server/controllers/user.controller/__tests__/helpers.test.ts +++ b/server/controllers/user.controller/__tests__/helpers.test.ts @@ -87,7 +87,7 @@ describe('user.controller > helpers', () => { ); expect(response.status).toHaveBeenCalledWith(500); expect(response.json).toHaveBeenCalledWith({ - error: 'async error' + error: 'Internal server error' }); }); }); diff --git a/server/controllers/user.controller/__tests__/userPreferences.test.ts b/server/controllers/user.controller/__tests__/userPreferences.test.ts index 9fc03189a1..5aee6883eb 100644 --- a/server/controllers/user.controller/__tests__/userPreferences.test.ts +++ b/server/controllers/user.controller/__tests__/userPreferences.test.ts @@ -84,7 +84,7 @@ describe('user.controller > user preferences', () => { it('returns 500 if saving preferences fails', async () => { mockUser = createMockUser({ preferences: { ...mockUserPreferences, theme: AppThemeOptions.LIGHT }, - save: jest.fn().mockRejectedValue(new Error('DB error')) + save: jest.fn().mockRejectedValue(new Error('Internal server error')) }); User.findById = jest @@ -101,7 +101,9 @@ describe('user.controller > user preferences', () => { ); expect(response.status).toHaveBeenCalledWith(500); - expect(response.json).toHaveBeenCalledWith({ error: expect.any(Error) }); + expect(response.json).toHaveBeenCalledWith({ + error: 'Internal server error' + }); }); }); @@ -155,7 +157,7 @@ describe('user.controller > user preferences', () => { it('returns 500 if saving cookieConsent fails', async () => { mockUser = createMockUser({ cookieConsent: CookieConsentOptions.ALL, - save: jest.fn().mockRejectedValue(new Error('DB error')) + save: jest.fn().mockRejectedValue(new Error('Internal server error')) }); User.findById = jest @@ -172,7 +174,9 @@ describe('user.controller > user preferences', () => { ); expect(response.status).toHaveBeenCalledWith(500); - expect(response.json).toHaveBeenCalledWith({ error: expect.any(Error) }); + expect(response.json).toHaveBeenCalledWith({ + error: 'Internal server error' + }); }); }); });