Skip to content

Commit

Permalink
adding changes + UT
Browse files Browse the repository at this point in the history
  • Loading branch information
rishikunnath2747 committed Jan 13, 2025
1 parent 5182681 commit f60f79b
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 25 deletions.
11 changes: 5 additions & 6 deletions lib/handler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

Expand All @@ -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;
}
}

Expand Down
2 changes: 1 addition & 1 deletion lib/sdm.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

Expand Down
42 changes: 29 additions & 13 deletions test/lib/handler/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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", () => {
Expand Down
14 changes: 9 additions & 5 deletions test/lib/sdm.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,23 +135,27 @@ 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,
"tokenValue"
);
expect(readAttachment).toHaveBeenCalledWith(
"mockUrl",
token,
"mockToken", // Passing the mocked token value
service.creds
);
});
Expand Down

0 comments on commit f60f79b

Please sign in to comment.