diff --git a/src/server.ts b/src/server.ts index 0fda731..0b1a7bf 100644 --- a/src/server.ts +++ b/src/server.ts @@ -139,10 +139,9 @@ function server( .login(authToken) .then((it) => it.scrobble(id).then((scrobbleSuccess) => { - if(scrobbleSuccess) - logger.info(`Scrobbled ${id}`) - else - logger.warn(`Failed to scrobble ${id}....`) + if (scrobbleSuccess) logger.info(`Scrobbled ${id}`); + else logger.warn(`Failed to scrobble ${id}....`); + return it; }) ) @@ -182,6 +181,13 @@ function server( } else { res.status(404).send(); } + }) + .catch((e: Error) => { + logger.error( + `Failed fetching image ${type}/${id}/size/${size}: ${e.message}`, + e + ); + res.status(500).send(); }); } }); diff --git a/tests/server.test.ts b/tests/server.test.ts index 39934d2..67a1a6b 100644 --- a/tests/server.test.ts +++ b/tests/server.test.ts @@ -553,7 +553,7 @@ describe("server", () => { describe("when there is a valid access token", () => { describe("some invalid art type", () => { - it("should return the image and a 200", async () => { + it("should return a 400", async () => { const res = await request(server) .get( `/foo/${albumId}/art/size/180?${BONOB_ACCESS_TOKEN_HEADER}=${accessToken}` @@ -605,7 +605,23 @@ describe("server", () => { expect(res.status).toEqual(404); }); - }); + }); + + describe("when there is an error", () => { + it("should return a 500", async () => { + musicService.login.mockResolvedValue(musicLibrary); + + musicLibrary.coverArt.mockRejectedValue("Boom") + + const res = await request(server) + .get( + `/artist/${albumId}/art/size/180?${BONOB_ACCESS_TOKEN_HEADER}=${accessToken}` + ) + .set(BONOB_ACCESS_TOKEN_HEADER, accessToken); + + expect(res.status).toEqual(500); + }); + }); }); describe("album art", () => { @@ -648,6 +664,21 @@ describe("server", () => { expect(res.status).toEqual(404); }); }); + + describe("when there is an error", () => { + it("should return a 500", async () => { + musicService.login.mockResolvedValue(musicLibrary); + musicLibrary.coverArt.mockRejectedValue("Boooooom") + + const res = await request(server) + .get( + `/album/${albumId}/art/size/180?${BONOB_ACCESS_TOKEN_HEADER}=${accessToken}` + ) + .set(BONOB_ACCESS_TOKEN_HEADER, accessToken); + + expect(res.status).toEqual(500); + }); + }); }); }); });