diff --git a/lib/handler/index.js b/lib/handler/index.js index 6c78294..e79de63 100644 --- a/lib/handler/index.js +++ b/lib/handler/index.js @@ -7,7 +7,7 @@ async function readAttachment(Key, token, credentials) { const document = await readDocument(Key, token, credentials.uri); return document; } catch (error) { - throw new Error(error); + throw error; } } @@ -30,12 +30,11 @@ async function readDocument(Key, token, uri) { const responseBuffer = Buffer.from(response.data, "binary"); return responseBuffer; } catch (error) { - let statusText = "An Error Occurred"; - if (error.response?.statusText) { - statusText = error.response.statusText; + if (error.message = "Error: AxiosError: Request failed with status code 404" && error.status == 404){ + error.message = "Attachment not found in the repository" } - - throw new Error(statusText); + error.code = error.status + throw error; } } diff --git a/lib/sdm.js b/lib/sdm.js index f16f88d..bc3deb6 100644 --- a/lib/sdm.js +++ b/lib/sdm.js @@ -66,7 +66,7 @@ module.exports = class SDMAttachmentsService extends ( const content = await readAttachment(Key, token, this.creds); return content; } catch (error) { - throw new Error(error); + throw error; } } diff --git a/test/lib/handler/index.test.js b/test/lib/handler/index.test.js index 5b082a8..b13b907 100644 --- a/test/lib/handler/index.test.js +++ b/test/lib/handler/index.test.js @@ -68,27 +68,43 @@ describe("handlers", () => { axios.get.mockImplementationOnce(() => Promise.reject({ response: { - statusText: "something bad happened", - }, + code: 500, + message: "Could not read the attachment", + } }) ); - + await expect( readAttachment("123", "a1b2c3", { uri: "http://example.com/" }) - ).rejects.toThrow("something bad happened"); - }); - - it('throws error with "An Error Occurred" message when statusText is missing', async () => { + ).rejects.toMatchObject({ + response: { + code: 500, + message: "Could not read the attachment", + }, + }); + }); + + it("throws specific error message for 404 status", async () => { + let actualError = { + message: "Error: AxiosError: Request failed with status code 404", + code: "AN ERROR OCCURRED", + status: 404, + }; + + let checkError = { + message: "Attachment not found in the repository", + code: 404, + status: 404, + }; + axios.get.mockImplementationOnce(() => - Promise.reject({ - response: {}, - }) + Promise.reject(actualError) ); - + await expect( readAttachment("123", "a1b2c3", { uri: "http://example.com/" }) - ).rejects.toThrow("An Error Occurred"); - }); + ).rejects.toMatchObject(checkError); + }); }); describe("getRepositoryInfo", () => { diff --git a/test/lib/sdm.test.js b/test/lib/sdm.test.js index 8a2ae1d..b7c1e6f 100644 --- a/test/lib/sdm.test.js +++ b/test/lib/sdm.test.js @@ -135,15 +135,19 @@ describe("SDMAttachmentsService", () => { const attachments = ["attachment1", "attachment2"]; const keys = ["key1", "key2"]; const response = { url: "mockUrl" }; + const errorMessage = new Error("Attachment not found in the repository"); + errorMessage.code = 404; + getURLFromAttachments.mockResolvedValueOnce(response); + fetchAccessToken.mockResolvedValueOnce("mockToken"); readAttachment.mockImplementationOnce(() => { - throw new Error("Error reading attachment"); + throw errorMessage; }); - + await expect(service.get(attachments, keys, req)).rejects.toThrow( - "Error reading attachment" + errorMessage ); - + expect(getURLFromAttachments).toHaveBeenCalledWith(keys, attachments); expect(fetchAccessToken).toHaveBeenCalledWith( service.creds, @@ -151,7 +155,7 @@ describe("SDMAttachmentsService", () => { ); expect(readAttachment).toHaveBeenCalledWith( "mockUrl", - token, + "mockToken", // Passing the mocked token value service.creds ); });