Skip to content

Commit 022fdd4

Browse files
authored
Merge pull request #3955 from Iron-56/fix/remove-uncaught-responses
Remove raw error responses from server
2 parents e3ea700 + 473a900 commit 022fdd4

10 files changed

Lines changed: 33 additions & 22 deletions

File tree

server/controllers/aws.controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ export async function copyObjectInS3RequestHandler(req, res) {
149149
const newUrl = await copyObjectInS3(url, req.user.id);
150150
res.json({ url: newUrl });
151151
} catch (error) {
152-
res.status(500).json({ error: error.message });
152+
console.error('Error copying object in S3:', error.message);
153+
res.status(500).json({ error: 'Internal server error' });
153154
}
154155
}
155156

server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ describe('user.controller > auth management > updateSettings (email, username, p
523523

524524
describe('and when there is any other error', () => {
525525
beforeEach(async () => {
526-
User.findById = jest.fn().mockRejectedValue('db error');
526+
User.findById = jest.fn().mockRejectedValue('Internal server error');
527527
requestBody = minimumValidRequest;
528528
request.setBody(requestBody);
529529
await updateSettings(
@@ -534,7 +534,9 @@ describe('user.controller > auth management > updateSettings (email, username, p
534534
});
535535
it('returns a 500 error', () => {
536536
expect(response.status).toHaveBeenCalledWith(500);
537-
expect(response.json).toHaveBeenCalledWith({ error: 'db error' });
537+
expect(response.json).toHaveBeenCalledWith({
538+
error: 'Internal server error'
539+
});
538540
});
539541
});
540542
});

server/controllers/user.controller/__tests__/helpers.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ describe('user.controller > helpers', () => {
8787
);
8888
expect(response.status).toHaveBeenCalledWith(500);
8989
expect(response.json).toHaveBeenCalledWith({
90-
error: 'async error'
90+
error: 'Internal server error'
9191
});
9292
});
9393
});

server/controllers/user.controller/__tests__/userPreferences.test.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ describe('user.controller > user preferences', () => {
8484
it('returns 500 if saving preferences fails', async () => {
8585
mockUser = createMockUser({
8686
preferences: { ...mockUserPreferences, theme: AppThemeOptions.LIGHT },
87-
save: jest.fn().mockRejectedValue(new Error('DB error'))
87+
save: jest.fn().mockRejectedValue(new Error('Internal server error'))
8888
});
8989

9090
User.findById = jest
@@ -101,7 +101,9 @@ describe('user.controller > user preferences', () => {
101101
);
102102

103103
expect(response.status).toHaveBeenCalledWith(500);
104-
expect(response.json).toHaveBeenCalledWith({ error: expect.any(Error) });
104+
expect(response.json).toHaveBeenCalledWith({
105+
error: 'Internal server error'
106+
});
105107
});
106108
});
107109

@@ -155,7 +157,7 @@ describe('user.controller > user preferences', () => {
155157
it('returns 500 if saving cookieConsent fails', async () => {
156158
mockUser = createMockUser({
157159
cookieConsent: CookieConsentOptions.ALL,
158-
save: jest.fn().mockRejectedValue(new Error('DB error'))
160+
save: jest.fn().mockRejectedValue(new Error('Internal server error'))
159161
});
160162

161163
User.findById = jest
@@ -172,7 +174,9 @@ describe('user.controller > user preferences', () => {
172174
);
173175

174176
expect(response.status).toHaveBeenCalledWith(500);
175-
expect(response.json).toHaveBeenCalledWith({ error: expect.any(Error) });
177+
expect(response.json).toHaveBeenCalledWith({
178+
error: 'Internal server error'
179+
});
176180
});
177181
});
178182
});

server/controllers/user.controller/apiKey.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,9 @@ export const createApiKey: RequestHandler<
7777
res.json({ apiKeys });
7878
} catch (err) {
7979
if (err instanceof Error) {
80-
res.status(500).json({ error: err.message });
81-
} else {
82-
res.status(500).json({ error: 'Internal server error' });
80+
console.error('Could not create API key:', err.message);
8381
}
82+
res.status(500).json({ error: 'Internal server error' });
8483
}
8584
};
8685

@@ -122,9 +121,8 @@ export const removeApiKey: RequestHandler<
122121
res.status(200).json({ apiKeys: user.apiKeys });
123122
} catch (err: unknown) {
124123
if (err instanceof Error) {
125-
res.status(500).json({ error: err.message });
126-
} else {
127-
res.status(500).json({ error: 'Internal server error' });
124+
console.error('Could not remove API key:', err.message);
128125
}
126+
res.status(500).json({ error: 'Internal server error' });
129127
}
130128
};

server/controllers/user.controller/authManagement.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,8 @@ export const updateSettings: RequestHandler<
201201
await saveUser(res, user);
202202
}
203203
} catch (err) {
204-
res.status(500).json({ error: err });
204+
console.error('Could not save settings:', err);
205+
res.status(500).json({ error: 'Internal server error' });
205206
}
206207
};
207208

server/controllers/user.controller/helpers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ export async function saveUser(res: Response, user: UserDocument) {
6767
await user.save();
6868
res.json(userResponse(user));
6969
} catch (error) {
70-
res.status(500).json({ error });
70+
console.error('Could not save user:', error);
71+
res.status(500).json({ error: 'Internal server error' });
7172
}
7273
}
7374

server/controllers/user.controller/signup.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ export const createUser: RequestHandler<
7575
}
7676
});
7777
} catch (err) {
78-
console.error(err);
79-
res.status(500).json({ error: err });
78+
console.error('Could not create user:', err);
79+
res.status(500).json({ error: 'Internal server error' });
8080
}
8181
};
8282

@@ -158,7 +158,8 @@ export const emailVerificationInitiate: RequestHandler<
158158

159159
res.json(userResponse(req.user!));
160160
} catch (err) {
161-
res.status(500).json({ error: err });
161+
console.error('Could not initiate email verification:', err);
162+
res.status(500).json({ error: 'Internal server error' });
162163
}
163164
};
164165

server/controllers/user.controller/userPreferences.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ export const updatePreferences: RequestHandler<
3333
await user.save();
3434
res.json(user.preferences);
3535
} catch (err) {
36-
res.status(500).json({ error: err });
36+
console.error('Could not save preferences:', err);
37+
res.status(500).json({ error: 'Internal server error' });
3738
}
3839
};
3940

@@ -61,6 +62,7 @@ export const updateCookieConsent: RequestHandler<
6162
user.cookieConsent = cookieConsent;
6263
await saveUser(res, user);
6364
} catch (err) {
64-
res.status(500).json({ error: err });
65+
console.error('Could not save cookie consent:', err);
66+
res.status(500).json({ error: 'Internal server error' });
6567
}
6668
};

server/server.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ app.get('/', (req, res) => {
168168
// Handle API errors
169169
app.use('/api', (error, req, res, next) => {
170170
if (error && error.code && !res.headersSent) {
171-
res.status(error.code).json({ error: error.message });
171+
console.error('API error:', error.message);
172+
res.status(error.code).json({ error: 'Internal server error' });
172173
return;
173174
}
174175

0 commit comments

Comments
 (0)