Skip to content

Commit 50eda72

Browse files
committed
test(lib-storage): speed up assertion of 5MB buffer
1 parent 91297f4 commit 50eda72

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

lib/lib-storage/src/Upload.spec.ts

+29-9
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ jest.mock("@aws-sdk/client-s3", () => ({
5151
}));
5252

5353
import { CompleteMultipartUploadCommandOutput, S3 } from "@aws-sdk/client-s3";
54+
import { createHash } from "crypto";
5455
import { Readable } from "stream";
5556

5657
import { Progress, Upload } from "./index";
@@ -76,6 +77,24 @@ describe(Upload.name, () => {
7677
Body: "this-is-a-sample-payload",
7778
};
7879

80+
expect.extend({
81+
toHaveSameHashAsBuffer: (received: Uint8Array, expected: Uint8Array) => {
82+
const receivedHash = createHash("sha256").update(received).digest("hex");
83+
const expectHash = createHash("sha256").update(expected).digest("hex");
84+
if (expectHash === receivedHash) {
85+
return {
86+
message: () => "received buffer has the correct hash",
87+
pass: true,
88+
};
89+
} else {
90+
return {
91+
message: () => `received buffer hash is incorrect, expect ${expectHash}, got ${receivedHash}.`,
92+
pass: false,
93+
};
94+
}
95+
},
96+
});
97+
7998
it("correctly exposes the event emitter API", () => {
8099
const upload = new Upload({
81100
params,
@@ -237,33 +256,30 @@ describe(Upload.name, () => {
237256
params: actionParams,
238257
client: new S3({}),
239258
});
240-
241259
await upload.done();
242-
243260
expect(sendMock).toHaveBeenCalledTimes(4);
244261
// create multipartMock is called correctly.
245262
expect(createMultipartMock).toHaveBeenCalledTimes(1);
246263
expect(createMultipartMock).toHaveBeenCalledWith({
247264
...actionParams,
248265
Body: undefined,
249266
});
250-
251267
// upload parts is called correctly.
252268
expect(uploadPartMock).toHaveBeenCalledTimes(2);
253269
expect(uploadPartMock).toHaveBeenNthCalledWith(1, {
254270
...actionParams,
255-
Body: firstBuffer,
271+
// @ts-ignore extended custom matcher
272+
Body: expect.toHaveSameHashAsBuffer(firstBuffer),
256273
PartNumber: 1,
257274
UploadId: "mockuploadId",
258275
});
259-
260276
expect(uploadPartMock).toHaveBeenNthCalledWith(2, {
261277
...actionParams,
262-
Body: secondBuffer,
278+
// @ts-ignore extended custom matcher
279+
Body: expect.toHaveSameHashAsBuffer(secondBuffer),
263280
PartNumber: 2,
264281
UploadId: "mockuploadId",
265282
});
266-
267283
// complete multipart upload is called correctly.
268284
expect(completeMultipartMock).toHaveBeenCalledTimes(1);
269285
expect(completeMultipartMock).toHaveBeenLastCalledWith({
@@ -320,14 +336,16 @@ describe(Upload.name, () => {
320336
expect(uploadPartMock).toHaveBeenCalledTimes(2);
321337
expect(uploadPartMock).toHaveBeenNthCalledWith(1, {
322338
...actionParams,
323-
Body: firstBuffer,
339+
// @ts-ignore extended custom matcher
340+
Body: expect.toHaveSameHashAsBuffer(firstBuffer),
324341
PartNumber: 1,
325342
UploadId: "mockuploadId",
326343
});
327344

328345
expect(uploadPartMock).toHaveBeenNthCalledWith(2, {
329346
...actionParams,
330-
Body: secondBuffer,
347+
// @ts-ignore extended custom matcher
348+
Body: expect.toHaveSameHashAsBuffer(secondBuffer),
331349
PartNumber: 2,
332350
UploadId: "mockuploadId",
333351
});
@@ -418,6 +436,8 @@ describe(Upload.name, () => {
418436
expect(putObjectTaggingMock).toHaveBeenCalledTimes(1);
419437
expect(putObjectTaggingMock).toHaveBeenCalledWith({
420438
...actionParams,
439+
// @ts-ignore extended custom matcher
440+
Body: expect.toHaveSameHashAsBuffer(largeBuffer),
421441
Tagging: {
422442
TagSet: tags,
423443
},

0 commit comments

Comments
 (0)