Skip to content

Commit c3e9f69

Browse files
authored
Add some more logs (#482)
2 parents ebff4da + c3f9230 commit c3e9f69

File tree

4 files changed

+51
-22
lines changed

4 files changed

+51
-22
lines changed

__mocks__/@google-cloud/storage.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ class MockFile {
9696
delete this.bucket.files[this.name];
9797
return Promise.resolve();
9898
}
99+
100+
if (this.name === 'THROW_ERROR') {
101+
throw new Error('Unexpected error!');
102+
}
103+
99104
// eslint-disable-next-line prefer-promise-reject-errors
100105
return Promise.reject({
101106
code: 404,

src/routes/profile.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from '../utils/errors';
1616
import { config } from '../config';
1717
import { create as gcsStorageCreate } from '../logic/gcs';
18-
import { ErrorResponse } from '@google-cloud/storage';
18+
import { ApiError } from '@google-cloud/storage';
1919

2020
export function profileRoutes() {
2121
const router = new Router();
@@ -90,15 +90,24 @@ export function profileRoutes() {
9090
await storage.deleteFile(profileToken);
9191
} catch (error: any) {
9292
if ('code' in error && 'message' in error) {
93-
const { code } = error as ErrorResponse;
93+
const { code } = error as ApiError;
9494
if (code === 404) {
95+
log.info(
96+
'gcs_deleteProfileNotFound',
97+
'The profile data that we attempted to delete from Google Cloud Storage was not found.'
98+
);
99+
95100
throw new NotFoundError(
96101
'That profile was most likely already deleted.'
97102
);
98103
}
99-
throw error;
100104
}
101-
console.log(error);
105+
log.warn(
106+
'gcs_deleteProfileUnknownError',
107+
'An unknown error occurred while deleting the profile from Google Cloud Storage: ' +
108+
String(error)
109+
);
110+
throw error;
102111
}
103112

104113
ctx.body = 'Profile successfully deleted.';

src/types/@google_cloud__storage.d.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

test/api/profile.test.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ describe('DELETE /profile', () => {
4646
return { acceptHeader, agent, postProfileToCompressedStore };
4747
}
4848

49-
it('gives a 200 response when successfully uploading a profile', async function () {
49+
it('gives a 200 response when successfully deleting a profile', async function () {
5050
const { agent, acceptHeader, postProfileToCompressedStore } = setup();
5151

5252
const { profileToken, jwtToken } = await postProfileToCompressedStore();
@@ -199,6 +199,38 @@ describe('DELETE /profile', () => {
199199
expect(process.stdout.write).toHaveBeenCalledWith(
200200
expect.stringMatching(/server_error.*NotFoundError/)
201201
);
202+
expect(process.stdout.write).toHaveBeenCalledWith(
203+
expect.stringMatching(
204+
'FirefoxProfiler.routes.profile.delete.gcs_deleteProfileNotFound'
205+
)
206+
);
207+
});
208+
209+
it('logs appropriately for any error', async function () {
210+
jest
211+
.spyOn(process.stdout, 'write')
212+
.mockImplementation((_: string | Uint8Array) => true);
213+
const { agent, acceptHeader } = setup();
214+
215+
// Generate a random token.
216+
const profileToken = 'THROW_ERROR';
217+
const jwtToken = generateToken({ profileToken });
218+
219+
await agent
220+
.delete(`/profile/${profileToken}`)
221+
.accept(acceptHeader)
222+
.set('Authorization', `Bearer ${jwtToken}`)
223+
.send()
224+
.expect(500, 'Internal Server Error');
225+
226+
expect(process.stdout.write).toHaveBeenCalledWith(
227+
expect.stringMatching(/server_error.*Unexpected error/)
228+
);
229+
expect(process.stdout.write).toHaveBeenCalledWith(
230+
expect.stringMatching(
231+
'FirefoxProfiler.routes.profile.delete.gcs_deleteProfileUnknownError'
232+
)
233+
);
202234
});
203235

204236
it('implements security headers', async () => {

0 commit comments

Comments
 (0)